LeetCode 104 & 111 Maximum & Minimum Depth of Binary Tree

LeetCode 104 & 111 Maximum & Minimum Depth of Binary Tree

===================

求binary tree的最大和最小深度,可以使用递归进行求解,注意递归式。这里最tricky的地方在于,求max时直接比较left与right的depth即可。

但在求min时,若某个节点node的left与right为null时,不会简单的将node的depth设为1。只有node节点为leaf时,其depth才为1;而node is not leaf && (node.left == null || node.right == null)时,其节点的计算变为考虑其不为null的那一个分支的depth。具体参见代码。

Max Depth

public class Solution {
    public int maxDepth(TreeNode root) {
        if (root == null) return 0;
        else {
            int ld = maxDepth(root.left);
            int rd = maxDepth(root.right);
            return Math.max(ld, rd) + 1;
        }
    }
}

Min Depth

public class Solution {
    public int minDepth(TreeNode root) {
        if (root == null) return 0;
        else {
            int ld = minDepth(root.left);
            int rd = minDepth(root.right);
            if (ld == 0)
                return rd + 1;
            else if (rd == 0) 
                return ld + 1;
            else 
                return Math.min(ld, rd) + 1;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容