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