题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
题目链接
平衡二叉树的性质
- 它是一棵空树或者它的左右子树的高度差的绝对值不超过1.并且 它的左右子树仍然是一棵平衡二叉树
解题思路
这里采用解法与求解二叉树的深度类似。只是增加了一个全局变量,每递归回来一层就判断一次左右子树是否满足要求。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.flag = True
def IsBalanced_Solution(self, pRoot):
# write code here
self.isBalanced(pRoot)
return self.flag
def isBalanced(self,pRoot):
if pRoot is None:return 0
left = self.isBalanced(pRoot.left)
right = self.isBalanced(pRoot.right)
diff = right - left
if diff > 1 or diff < -1:
self.flag = False
return left+1 if left >= right else right+1