用一个全局变量min记录最小的节点深度即可。使用前序遍历,每次遍历前先把深度求出,如果某节点左右孩子为空则判断深度是否小于最小深度。如果小于最小深度则更新最小深度。
import java.util.*;
public class Solution {
Integer min = Integer.MAX_VALUE;
public int run (TreeNode root) {
if(root==null)return 0;
preOrder(root,0);
return min;
}
void preOrder(TreeNode root,int depth){
if(root!=null){
++depth;
if(root.left==null&&root.right==null){
if(min>depth)
min = depth;
}
preOrder(root.left,depth);
preOrder(root.right,depth);
--depth;
}
}
}