&LeetCode111& 二叉树的最小深度

题目

给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。

示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回它的最小深度 2.

来源:力扣(LeetCode

思路

首先,判断是否为空;
若当前结点不存在,直接返回0;
然后,若左子结点不存在,那么对右子结点调用递归函数,并加1返回;
反之,若右子结点不存在,那么对左子结点调用递归函数,并加1返回;
若左右子结点都存在,则分别对左右子结点调用递归函数,将两者中的较小值加1返回即可。

C++代码

class Solution {
public:
    int minDepth(TreeNode* root) 
    {
        if (!root)
            return 0;
        if (!root -> left)
            return minDepth(root -> right) + 1;
        if (!root -> right)
            return minDepth(root -> left) + 1;
        return 1 + min(minDepth(root -> left), minDepth(root -> right));
    }
};
发布了51 篇原创文章 · 获赞 20 · 访问量 2085

猜你喜欢

转载自blog.csdn.net/weixin_40482465/article/details/104488567