题目
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例
3
/ \
9 20
/ \
15 7
返回的最小深度是2
1
/
2
返回的最小深度是2
思路
分5种情况
- root为空,返回0
- root左右子树均为空,返回1
- root左子树为空,右子树不为空,返回右子树的最小深度+1
- root右子树为空,左子树不为空,返回左子树的最小深度+1
- 左右子树均不为空,返回min(左子树高度,右子树高度)+1
class Solution {
public int minDepth(TreeNode root) {
if(root == null){
return 0;
}
if(root.left == null && root.right == null){
return 1;
}
if(root.left == null){
return minDepth(root.right)+1;
}
if(root.right == null){
return minDepth(root.left)+1;
}
return Math.min(minDepth(root.right),minDepth(root.left))+1;
}
}