题目描述:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
平衡二叉树:一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
思路:
递归,返回左右二叉树的高度和左右是否是平衡二叉树
判断左右是否平衡,左右高度差是否小于2
代码:
class Solution:
def IsBalanced_Solution(self, pRoot):
# write code here
is_p, d_p = self.helper(pRoot)
return is_p
def helper(self, p):
if not p:
return True, 0
is_left, d_left = self.helper(p.left)
is_right, d_right = self.helper(p.right)
is_p = is_left and is_right and abs(d_left - d_right) < 2
d_p = max(d_left, d_right) + 1
return is_p, d_p