📅  最后修改于: 2023-12-03 15:26:08.925000             🧑  作者: Mango
给定一个二叉树,请判断它是否是高度平衡的二叉树。一个高度平衡二叉树是指每个节点的两个子树的深度差不超过 1。
我们可以使用递归的方式来判断一个二叉树是否是高度平衡的二叉树。
对于一个节点,我们可以分别递归地求出其左子树和右子树的深度,如果左右子树的深度差大于 1,说明该节点不是高度平衡的,返回 false,否则继续递归它的左右子节点。
具体实现可以参考下面的代码:
class Solution:
def isBalanced(self, root: TreeNode) -> bool:
# 递归函数,判断该节点是否是平衡二叉树,并返回其深度
def helper(node):
if not node:
return 0
left = helper(node.left) # 左子树的深度
if left == -1: # 左子树不是平衡二叉树
return -1
right = helper(node.right) # 右子树的深度
if right == -1: # 右子树不是平衡二叉树
return -1
return max(left, right) + 1 if abs(left - right) <= 1 else -1
# 判断根节点是否是平衡二叉树
return helper(root) != -1