# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param pRoot TreeNode类
# @return bool布尔型
class Solution:
def IsBalanced_Solution(self, pRoot: TreeNode) -> bool:
# 使用一个辅助函数来递归判断是否平衡
def is_balanced_and_depth(root):
if root is None:
return True, 0
# 获取左子树的平衡状态和深度
left_balanced, left_depth = is_balanced_and_depth(root.left)
if not left_balanced:
return False, 0
# 获取右子树的平衡状态和深度
right_balanced, right_depth = is_balanced_and_depth(root.right)
if not right_balanced:
return False, 0
# 当前节点的平衡状态取决于左右子树的平衡状态以及它们的深度差
balanced = abs(left_depth - right_depth) <= 1
depth = max(left_depth, right_depth) + 1
return balanced, depth
# 只返回是否平衡的结果
balanced, _ = is_balanced_and_depth(pRoot)
return balanced