Last updated 2 years ago
判断是不是平衡二叉树_牛客题霸_牛客网
问题简述
输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
思路
根据平衡树的性质,为了判断当前节点是否平衡,需要的信息有:子树的高度、子树是否为平衡二叉树;
对空节点,初始化为:0, True
0, True
class Solution: def IsBalanced_Solution(self , pRoot: TreeNode) -> bool: from dataclasses import dataclass @dataclass class Info: height: int # 树的高度 is_bbt: bool # 是否平衡 def dfs(x): if not x: return Info(0, True) l, r = dfs(x.left), dfs(x.right) height = max(l.height, r.height) + 1 is_bbt = l.is_bbt and r.is_bbt and abs(l.height - r.height) <= 1 return Info(height, is_bbt) return dfs(pRoot).is_bbt