【每日刷题】二叉树的最小深度

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
        }
    }

运行结果:(为什么自从我换了台电脑之后,运行时间一直很慢。。)
image.png-39.5kB


我的微信公众号

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sd4567855/article/details/88074762
今日推荐