解题思路:
用后序遍历
题目要求的最小深度为根节点到叶子节点的最小深度,注意是到根节点,所以如图所示假设(没有9这个节点)是需要返回3的,而不是1(根节点左子树为空的情况),于是需要加两层判断
其余部分可参考求最大深度的思路,有一定相似之处
java
class Solution {
public int minDepth(TreeNode root) {
if (root == null) return 0;
int leftDepth = minDepth(root.left);
int rightDepth = minDepth(root.right);
if (root.left == null && root.right != null) return 1 + rightDepth;
if (root.left != null && root.right == null) return 1 + leftDepth;
int res = 1 + Math.min(leftDepth, rightDepth);
return res;
}
}