111. Minimum Depth of Binary Tree

Posted skillking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了111. Minimum Depth of Binary Tree相关的知识,希望对你有一定的参考价值。

一、题目

  1、审题

技术分享图片

  2、分析

    给出一颗二叉树,求最小高度(根节点到叶节点的最短距离)。

 

二、解答

  1、思路:

    方法一、

      采用 BFS 层次遍历的方法进行遍历二叉树。同时,若出现叶子节点,则返回当前高度。

public int minDepth(TreeNode root) {
        if(root == null)
            return 0;
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        queue.add(root);
        int min = 0;
        while(!queue.isEmpty()) {
            min++;
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                if(node.left == null && node.right == null)
                    return min;
                if(node.left != null)
                    queue.add(node.left);
                if(node.right != null)
                    queue.add(node.right);
            }
        }
        
        return min;
    }

  方法二、

    采用递归。

  public int minDepth(TreeNode root) {
        if(root == null)
            return 0;
        
        if(root.left != null && root.right != null)    //    root 左右孩子均存在
            return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
        else                     // root 只有一个孩子
            return Math.max(minDepth(root.left), minDepth(root.right)) + 1;
    }

  另外

  

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

 

以上是关于111. Minimum Depth of Binary Tree的主要内容,如果未能解决你的问题,请参考以下文章

111. Minimum Depth of Binary Tree

111.minimum depth of binary tree(E)

111. Minimum Depth of Binary Tree

111. Minimum Depth of Binary Tree

111. Minimum Depth of Binary Tree

[LeetCode]题解(python):111 Minimum Depth of Binary Tree