题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
思路:
平衡二叉树
(AVL)平衡二叉树是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。意思是说,要么它是一棵空树,要么它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。
平衡二叉树是一种二叉排序树。也就是二叉排序树包含了平衡二叉排序树,其次它要满足后面的约束条件,就是每个结点的左子树和右子树的高度差不超过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
if not pRoot: return 1
left = self.IsBalanced_Solution(pRoot.left)
right = self.IsBalanced_Solution(pRoot.right)
if not left:return False
if not right:return False
if abs(left-right)<2:
return 1+max(left,right)
else:
return False