最小深度是沿着从根节点到最近叶节点的最短路径的节点数量。
//树节点
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
1.先判断根节点有无节点,没有返回0;
2.在判断根节点的左右有无节点,没有返回1;
3.如果以上都不成立,再判断左右子节点是否为空,进行递归操作
4.如果左右子节点都不为空,在判断左子节点是否为空或者右子节点是否为空。
public class Solution {
public int run(TreeNode root) {
if( root == null ){
return 0;
}
if( root.left == null && root.right == null ){
return 1;
}
if( root.left != null && root.right != null ){
int l = run(root.left);
int r = run(root.right);
return (l<r?l:r)+1;
}
if( root.left != null ){
return run(root.left)+1;
} else if ( root.right != null ) {
return run(root.right)+1;
}
return 0;
}
}