首先得知道什么是平衡二叉树?**平衡二叉树定义:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。**直接看代码的注释就懂了。
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def IsBalanced_Solution(self, pRoot):
# write code here
def helper(root): # proot下的左右子树若平衡(深度差<=1)则返回深度,不平衡返回-1
if root is None:
return 0
left = helper(root.left)
right = helper(root.right)
# 左子树不平衡,或右子树不平衡,或当前树结点不平衡 直接返回-1
if left == -1 or right == -1 or abs(left-right) > 1:
return -1
return max(left, right) + 1
if helper(pRoot) != -1: # 最后看深度是否为-1即可判断是否平衡
return True
else:
return False