Leetcode110. 平衡二叉树
题目描述:
给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
解法1:
class Solution:
def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
def balanced(root):
if not root:
return 0
left = balanced(root.left)
right = balanced(root.right)
if left == -1 or right == -1 or abs(left - right) > 1:
return -1
return 1 + max(left, right)
return balanced(root) != -1
解法2:
class Solution:
def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
nodes = [root]
for node in nodes:
if node:
nodes.extend([node.left, node.right])
depths = {}
nodes.reverse()
for node in nodes:
if node:
if abs(depths.get(node.left, 0) - depths.get(node.right, 0)) > 1:
return False
depths[node] = max(depths.get(node.left, 0), depths.get(node.right, 0)) + 1
return True
补充:
extend() 函数用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
#!/usr/bin/python
aList = [123, 'xyz', 'zara', 'abc', 123];
bList = [2009, 'manni'];
aList.extend(bList)
print "Extended List : ", aList ;
以上实例输出结果如下:
Extended List : [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']
get() 函数返回指定键的值,如果值不在字典中返回默认值。
dict.get(key, default=None)
key – 字典中要查找的键。
default – 如果指定键的值不存在时,返回该默认值值。
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 27}
print "Value : %s" % dict.get('Age')
print "Value : %s" % dict.get('Sex', "Never")
以上实例输出结果为:
Value : 27
Value : Never