美文网首页
Minimum Depth of Binary Tree

Minimum Depth of Binary Tree

作者: yang2yang | 来源:发表于2016-05-31 17:34 被阅读12次

    LeetCode中的Maximum Depth of Binary TreeMinimum Depth of Binary Tree的比较

    首先

    树的题目一般可以使用递归来解决问题,而且递归的问题实在不能太关注于细节,应该这样将树看成是一个由根节点,左子树和右子树组成的一样东西。

    Maximum

    第一题的思路应该是这样的,要算出来所有一个二叉树的深度。什么是深度?其实直观地看一个树就是看这棵树有多少层,这棵树的深度就是多少。

    那么如何算出来一个树的深度呢?利用上面对一棵二叉树的定义,可以这样理解,左子树和右子树的深度中,选择大的那一个,然后加上1,也就是根的层树就行了。

    但是,别忘了,这个思考的前提是树不为null,当树为null的时候,没有根,也没有左子树,也没有右子树,就当然不能这样算了。所以再划分出来一种情况就是当root为null的时候,返回的是0。

    贴代码:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public int maxDepth(TreeNode root) {
            if(root == null){
                return 0;
            }
            
            int l = maxDepth(root.left);
            int r = maxDepth(root.right);
            
            return Math.max(l,r)+1;
        }
    }
    

    Minimum

    同理,第二道题目,最普遍的一种情况是左右子树都存在的情况,这时候最小值是左,右子树中取小的那一个深度,然后加上根就行了。

    但是,这个考虑的时候,要考虑到除了根为空的时候,这一种特殊情况之外。还要考虑的是,当左子树为空的时候,上面那种最普遍的算法是不成立的,还按照上面那个来的话,会直接按空的子树来算出来最短的深度,注意对比一下最大深度,这中特殊情况下,普通的算法也是可以算的。那么就要分别考虑左右子树分别为空的情况了。

    那么,左右子树都为空的情况呢?需不需要另外考虑。其实是不需要的,因为如果左子树为空后,右子树也是为空,那么返回的还是0,其实还是一个正确的答案。但是如果,单列出来,其实也是没有是问题的。

    下面贴出代码:

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public 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;
            }
            
            return Math.min(minDepth(root.left),minDepth(root.right))+1;
        }
    }
    

    还有一点提醒就是,要把最根本,或者这个情况成立的情况,其他情况不成立的情况,最先考虑,比如所root为null的情况。(有点语无伦次,不理解也没有关系,反正我能懂吧?2333)。

    相关文章

      网友评论

          本文标题:Minimum Depth of Binary Tree

          本文链接:https://www.haomeiwen.com/subject/tpacdttx.html