平衡二叉树(BST)的定义是二叉树的左子树和右子树的高度差小于等于1,因此我们可以先计算出一棵树的左右子树的高度,然后根据BST的定义判断是否是BST。代码如下:
class Solution:
def treeHeight(self,tree):#计算树的高度
if tree==None:
return 0
return max(self.treeHeight(tree.left),self.treeHeight(tree.right))+1
#树的高度为左右子树中最高的子树的高度加1
def IsBalanced_Solution(self, pRoot):
# write code here
if pRoot == None:
return True
return abs(self.treeHeight(pRoot.left) - self.treeHeight(pRoot.right))<=1