剑指offer之平衡二叉树(Python)

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

这里首先得知道平衡二叉树的性质

平衡二叉搜索树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

思路:递归调用判断是否为平衡二叉树的函数,判断条件,任意违背以下条件之一则不为平衡二叉树:

1、左子树与右子树自身不小于0(这个怎么理解呢)

2、左子树与右子树高度只差不超过1(注意:是任一左子树与右子树!!)

class TreeNode():
	def __init__(self, x):
		self.val = x
		self.left = None
		self.right = None
def function(root):
	return judge(root) >= 0
def judge(root):
	if not root:
		return 0
	left = judge(root.left)
	right = judge(root.right)
	if (left < 0 or right < 0 or abs(left - right) > 1 ):
		return -1
	return max(left , right)+1

    原文作者:平衡二叉树
    原文地址: https://blog.csdn.net/u010636181/article/details/78336201
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞