版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sd4567855/article/details/88074762
day40 二叉树的最小深度
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
//示例:
//给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
//返回它的最小深度 2.
解答:这道题的关键在于,对于某一个结点,针对不同的情况的处理。
当结点为空时,返回深度0;
当结点为叶结点时,返回深度为1;
当结点的左右结点都存在时,返回其左子树和右子树中较小者并加1;
当结点只有一个子树时,直接将深度加1.
代码:
int minDepth(TreeNode* root) {
if( !root)
return 0;
if( root && !root->left && !root->right)
return 1;
else{
if( root->left && root->right)
return min(minDepth( root->left) , minDepth( root->right) )+ 1;
else if( !root->left)
return minDepth( root->right) + 1;
else
return minDepth( root->left) + 1;
}
}
运行结果:(为什么自从我换了台电脑之后,运行时间一直很慢。。)