110平衡二叉数

本文介绍了一种判断二叉树是否为高度平衡的方法。高度平衡的二叉树定义为任意节点的左右子树高度差不超过1。文章通过递归算法实现对二叉树高度的计算,并基于此判断整个二叉树是否符合平衡条件。

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

给定一个二叉树,判断它是否是高度平衡的二叉树。

本题中,一棵高度平衡二叉树定义为:

一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。

题解:

1. 要判断每个分支的高度,一旦有一个分支不是高度平衡二叉树,就返回Flase,只有左右子树都是高度平衡二叉树,才为True

2. 用递归左右 每个分支的高度,求每个分支的高度又是一个递归

求一棵树的高度:

def maxhigth(r):
        if r==None:
            return 0
        leftmax =  maxhigth(r.left)+1
        rightmax = maxhigth(r.right)+1
        return max(rightmax,leftmax))

判断是否为高度平衡二叉树,用先序来递归每个分支的高度

class Solution:
    def maxhigth(self,r):
        if r==None:
            return 0
        leftmax =  self.maxhigth(r.left)+1
        rightmax = self.maxhigth(r.right)+1
        return max(rightmax,leftmax)#,min(rightmin,leftmin)
    
    def isBalanced(self, root: TreeNode) -> bool:
        if root==None:
            return True
        left=self.maxhigth(root.left)
        right = self.maxhigth(root.right)
        lnode = root.left
        rnode = root.right
        if abs(left-right)>1:
            return False
        lresult = self.isBalanced(lnode)
        rresult = self.isBalanced(rnode)
        if lresult ==False or rresult==False:
            return False
        else: return True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值