很简单的一道题,直接深搜就行;
设置一全局变量,记录最小深度;
深搜遇叶子节点,更新最小深度;
为了降低复杂度,剪枝部分分支;
代码如下
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
public int min = Integer.MAX_VALUE;
public int run (TreeNode root) {
if (root==null) return 0;
dfs(root,1);
return min;
}
private void dfs(TreeNode node, int depth) {
if (node.left==null&&node.right==null){
min=min>depth?depth:min;//更新最小深度
return;
}
if (depth>min) return;//剪枝
if (node.left!=null){
dfs(node.left,depth+1);
}
if (node.right!=null){
dfs(node.right,depth+1);
}
}
} 
京公网安备 11010502036488号