题目描述:
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
解题思路:
平衡二叉树(Balanced Binary Tree)具有以下性质:
它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。
最小二叉平衡树的节点的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,可以参考Fibonacci数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量。
本题根据"左右两个子树的高度差的绝对值不超过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):
if pRoot == None:
return True
if abs(self.TreeDepth(pRoot.left) - self.TreeDepth(pRoot.right)) > 1:
return False
return self.IsBalanced_Solution(pRoot.left) and self.IsBalanced_Solution(pRoot.right)
def TreeDepth(self,pRoot):
if pRoot == None:
return 0
nLeft = self.TreeDepth(pRoot.left)
nRight = self.TreeDepth(pRoot.right)
return max(nLeft,nRight) + 1
本文介绍如何判断一棵二叉树是否为平衡二叉树,通过递归计算左右子树深度差来验证平衡性,同时探讨了平衡二叉树的性质及其实现方法。
&spm=1001.2101.3001.5002&articleId=103018658&d=1&t=3&u=8ded518147fa4dbfbf495f4a9903fde6)
742

被折叠的 条评论
为什么被折叠?



