LeetCode | Minimum Depth of Binary Tree

100 篇文章 0 订阅
28 篇文章 0 订阅

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.


需要注意的一点是

当左孩子不为空而右孩子为空的时候,说明此时右边孩子返回的0并不是叶子节点,而是空节点的值。
而这一点表明它并不是叶子节点。
所以叶子节点应当还在左侧,故需要返回左侧子树的最小高度+1

如下图:
图片
应当返回的值是2.但是如果类似于求树的高度,直接使用min(left,height)+1会导致返回的值始终是1

因为在这个时候右子树为空,左子树不为空(2),最近的叶子节点还在左侧。

class Solution {
public:
    int minDepth(TreeNode* root) {
        if(!root) return 0;

        int left=minDepth(root->left);
        int right=minDepth(root->right);

        //表示已经找到叶子节点
        if(left==0 && right==0) return 1;
        //如果二者只有一个为0,则表示其中一棵子树为空
        //故这棵为空的子树的高度不应当算给整体高度,而应当单独处理
        if(left==0) return right+1;
        if(right==0) return left+1;

        return min(left,right)+1;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值