110.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。
题解
class Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
self.flag = True
def deep(p):
if not p:
return 0
deep_left = deep(p.left)
deep_right = deep(p.right)
print(deep_left, deep_right)
if (deep_left - deep_right) ** 2 > 1:
self.flag = False
return max(deep_left, deep_right) + 1
d = deep(root)
return self.flag
思路
递归遍历二叉树,递归目的是获取子节点的高度,分别得到左右子树的高度,当二叉树中存在左右子树高度差超过1的情况是,判定为False。
用python实现,这个flag要设为对象属性,不然会不生效。