您的位置:首页 > 编程语言 > Python开发

【Leetcode】【python】Balanced Binary Tree

2017-08-03 04:10 387 查看

题目大意

判断一颗二叉树是否是“高度”平衡的。

平衡二叉树的定义是二叉树的任意节点的两颗子树之间的高度差小于等于1。

这实际上是AVL树(维基百科)的定义。

解题思路

递归判断自身和自身左右子树是否都是平衡的。

而每个循环内判断的依据就是判断树的深度,之前做过的。

代码

class Solution(object):
def maxDepth(self, root):
if root == None:
return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right))+1

def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
if root == None:
return True
if abs(self.maxDepth(root.left) - self.maxDepth(root.right)) > 1:
return False
return self.isBalanced(root.left) and self.isBalanced(root.right)


总结

and/or的用法要牢记,不仅仅是用在if判断里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python leetcode