Minimum Depth Of Binary Tree

Aug 3 2017 Update

遞歸方法1:

    private int minDepth(TreeNode root) {
        if (root == null) return 0;
        if (root.left == null)
            return minDepth(root.right) + 1;
        if (root.right == null)
            return minDepth(root.left) + 1;
        int min = Math.min(minDepth(root.left), minDepth(root.right));
        return min + 1;
    }

樹(shù)只有一個(gè)孩子的情況要去遞歸執(zhí)行它的孩子,depth要+1。
最后那個(gè)int min也要+1, 因?yàn)檫€要把根結(jié)點(diǎn)算上。

遞歸方法2:
感覺(jué)比1難懂一點(diǎn)。。其實(shí)一樣。

    public int minDepth(TreeNode root) {
        if(root == null) return 0;
        int left = minDepth(root.left);
        int right = minDepth(root.right);
        return (left == 0 || right == 0) 
        ?left + right + 1
        : Math.min(left,right) + 1;
    }

--
原來(lái)的post

遞歸方法通用只需要3行。
非遞歸方法:

    public int minDepth(TreeNode root) {
        if (root == null) return 0;
        int level = 0;
        int curNum = 1;
        int nextNum = 0;
        LinkedList<TreeNode> linkedList = new LinkedList<>();
        linkedList.add(root);
        while (!linkedList.isEmpty()) {
            TreeNode node = linkedList.poll();
            curNum--;
            if (node.left == null && node.right == null)
                return level + 1;

            if (node.left != null) {
                linkedList.add(node.left);
                nextNum++;
            }
            if (node.right != null) {
                linkedList.add(node.right);
                nextNum++;
            }
            if (curNum == 0) {
                curNum = nextNum;
                nextNum = 0;
                level++;

            }
        }
        return level;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容