题目:
Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
题意:
给定一个二叉树,求它的最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数。
解题思路:
类似要求最小深度或最大深度这些题都可以用递归来解
递归解法:
若为空树返回0
若左子树为空,则返回右子树的最小深度+1;(加1是因为要加上根这一层,下同)
若右子树为空,则返回左子树的最小深度+1;
若左右子树均不为空,则取左、右子树最小深度的较小值,+1
加1 是表示加上根节点那个点
代码:
public int run(TreeNode root) {
if (root == null){
return 0;
}
else{
if(root.left == null){
return run(root.right)+1;
}
if(root.right == null){
return run(root.left)+1;
}
if((root.right == null) && (root.left == null)){
return 1;
}
}
return Math.min(run(root.left),run(root.right))+1;
}