給定一棵二叉樹,找到它的最小深度。
最小深度問題就是就最短路徑的節點個數
/*
思路:
遞歸,若爲空樹返回0;
若左子樹爲空,則返回右子樹的最小深度+1;(加1是因爲要加上根這一層,下同)
若右子樹爲空,則返回左子樹的最小深度+1;
若左右子樹均不爲空,則取左、右子樹最小深度的較小值,+1;
*/
public class l101_minimum_depth_binarytree {
class TreeNode{
int value;
TreeNode left;
TreeNode right;
TreeNode(int x){
value=x;
}
}
//遞歸,自頂向下
public int run(TreeNode root) {
if(root==null)
return 0;
if(root.left==null&&root.right==null)
return 1;
else{
if(root.left==null){
return run(root.right)+1;
}
if(root.right==null){
return run(root.left)+1;
}
}
return Math.min(run(root.left),run(root.right))+1;
}
}