题目描述
AC代码
本题让找最小深度,题目对最小深度的定义是:从根节点到最近叶子节点的最短路径上的节点数量。其实可以理解为求左右子树的深度,然后取较小的那一个作为答案。
注意,如果一棵树只有根节点,那么答案应该是1,为什么呢?题目中对叶子节点的定义是指没有子节点的节点。
再看其他情况:
当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度,在这里我们可以把左右孩子一起判断。假设左孩子空,实际上返回的是右子树的深度,右孩子空则返回左子树的深度,若都是空那就是1咯。
if(root.left==null||root.right==null)
return left+right+1;
当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public int minDepth(TreeNode root) {
if(root==null)
return 0;
int left=minDepth(root.left);
int right=minDepth(root.right);
if(root.left==null||root.right==null)
return left+right+1;
return Math.min(left,right)+1;
}
}