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;
        }
    }
}

你可能感兴趣的:(LeetCode 104 & 111 Maximum & Minimum Depth of Binary Tree)