用一个全局变量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;
        }
    }
}