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.
分类:二叉树
题意:对于指定的二叉树,查找它的最小深度。最小深度是指,从当前节点开始,到其叶子节点的最短路径的长度。
解法1:递归。注意题目要求,最短路径是指当前节点到其叶子节点。所有如果当前节点没有左子树,则最短路径为右子树的最短路径加一;如果当前节点没有右子树,则最短路径为左子树的最短路径加一;如果左右子树都存在,才比较选出最短路径。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int minDepth(TreeNode root) {
if(root==null) return 0;
else{
int left = minDepth(root.left);//左子树最短路径
int right = minDepth(root.right);//右子树最短路径
if(left==0&&right==0) return 1;//如果左右子树都不存在,返回1
if(left==0&&right!=0) return right+1;//如果左子树不存在,为右子树deepth+1
if(left!=0&&right==0) return left+1;//如果右子树不存在,为左子树deepth+1
return left<right?left+1:right+1;//如果左右子树都存在,比较选出较小的
}
}
}
解法2: