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

来源:互联网 发布:淘宝怎么评价卖家 编辑:程序博客网 时间:2024/06/15 23:17

题目描述

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

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

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


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

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

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


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

 
原创粉丝点击