题目:
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最小深度 2.
思路:实际上就是求二叉树的深度,只不过在比较左右子树长度的时候要选取长度较小的子树。而且还要注意的一种特殊情况是当某个节点没有左子树或者没有右子树时,此时要返回的是另一条存在的子树的长度,而不是去选长度小的。
int minDepth(TreeNode* root)
{
if(root==NULL)
return 0;
int l = minDepth(root->left);
int r = minDepth(root->right);
if(l==0)
return r+1;
if(r==0)
return l+1;
return min(l,r)+1;
}