【LeetCode】110. 平衡二叉树


 解题思路:

要求每个节点的左右子树高度差不大于1

由于每个节点高度由它的左右子树的高度决定,那么可利用递归先从最底层开始计算高度,

若节点无子节点返回0,计算高度

若有结点的左右子树高度差大于1,说明其不是平衡的,可返回-1代表不平衡,

一旦出现了 -1 就说明不平衡,那就从出现-1的地方到根节点 高度都为-1

若左右子树高度差都小于等于1,那就取该节点正常高度,继续计算,

        def height(root):
            if not root:return 0
            leftheght = height(root.left)
            rightheght = height(root.right)

            if leftheght == -1 or rightheght == -1 or abs(leftheght-rightheght)>1:
                '''
                左右高度差大于1,或左右子树中存在不平衡(-1),往上就都不平
                '''
                return -1
            else :
                return max(leftheght,rightheght)+1    #否则正常计算高度
        return height(root) >= 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onlywishes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值