题目
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
平衡二叉树
百度解释:平衡二叉树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
csdn博主详细解释:
二叉查找树与平衡二叉树
平衡二叉树:一颗高度平衡的二叉查找树
思路一:
自顶向下,对于每个节点,都计算一下左子树以及右子树的差的绝对值。
利用两个迭代实现
class Solution:
def IsBalanced_Solution(self, p):
if p is None:#判断边界条件,若为空,则返回None
return True
left = self.depth(p.left)#判断子结点的深度
right = self.depth(p.right)#判断子结点的深度
return abs(left - right) <=1 and self.IsBalanced_Solution(p.left) and self.IsBalanced_Solution(p.right)
def depth(self, p):#判断子节点的深度
if p is None:
return 0
return 1 + max(self.depth(p.left), self.depth(p.right))#利用不断地递归去判断