判断一颗二叉树是否为二叉平衡树 python 代码

  输入一颗二叉树,判断这棵树是否为二叉平衡树。首先来看一下二叉平衡树的概念:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,而且左右两个子树都是一棵平衡二叉树。所以判断一颗二叉平衡树的关键在于求出左右子树的高度差,而二叉树的高度又是怎么定义的呢?二叉树的高度指的是从根节点到叶子节点全部路径上包含节点个数的最大值。因此咱们能够得出,父亲节点的高度与左右子树高度的关系为:父亲节点的高度=max(左子树高度,右子树高度)+1,同时咱们知道,叶子节点的高度值为1(或则0,这里定义1或者0对判断结果没有影响),根据这两条规则,咱们就能够利用迭代来求出树的高度。从叶子节点开始不断回溯,依次求得左右节点的高度并判断左右节点的高度差,而后继续向上判断,具体过程参见代码。spa

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 balanced(root,height=0): #叶子节点的高度定义为0 if not root: height=0 return True,height #由根节点向下迭代 balanceleft,left=balanced(root.left) balanceright,right=balanced(root.right) #若是左右子树都是平衡二叉树而且高度差不超过1,那么继续向上判断,父亲节点的高度值=max(左,右)+1 if balanceleft and balanceright: if abs(left-right)<=1: height=left+1 if left>right else right+1 return True,height return False,height balance,height=balanced(pRoot) return balance
相关文章
相关标签/搜索