110. Balanced Binary Tree

本文探讨了如何通过递归算法确定二叉树是否平衡,即任一节点的两个子节点深度差不超过1。介绍了一种从叶子节点开始,向上递归计算每个节点子树深度的方法,并在过程中检查深度差。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求某节点的两个子节点的深度(最深深度)差是否超过1。

最开始没弄清题意,以为是求最深节点与最浅节点的差,后来仔细读题发现是求两个子节点,但为什么是对比两个子节点的最深深度,目前不是很清楚。

思路:令叶子节点的深度为1;然后一直递归至根节点。每到一个节点就对比左右子节点的最深深度,若深度差大于1,则返回-1表示已经有节点不满足,然后一直递归到根节点。

代码:

class Solution {
public:
int travel(TreeNode* node)
{
    if(node==NULL)
        return 0;
    int l_level=travel(node->left);
    int r_level=travel(node->right);
    if(l_level==-1 || r_level==-1)
        return -1;
    if(abs(l_level-r_level)>1)
        return -1;
    return max(l_level,r_level)+1;
}
bool isBalanced(TreeNode* root) {
    if(root==NULL)
        return true;
    if(travel(root)==-1)
        return false;
    return true;
}
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值