给定一个二叉树,判断它是否是高度平衡的二叉树。
本题中,一棵高度平衡二叉树定义为:
一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。
示例 1:
给定二叉树 [3,9,20,null,null,15,7]
3
/
9 20
/
15 7
返回 true 。
示例 2:
给定二叉树 [1,2,2,3,3,null,null,4,4]
1
/ \
2 2
/ \
3 3
/
4 4
返回 false 。
第一次的代码:
直接递归,同时返回bool变量,只要有一颗子树不满足要求(即左右子树高度差大于1),返回False
def r(l):
if not l :#若root为None,True
return 1,True
dl,li=r(l.left)
dr,ri=r(l.right)
#若左右子树满足要求,且左右子树深度满足要求
if li and ri and abs(dl-dr)<=1:
return 1+max(dl,dr),True
else:# return 任意数,False
return 1+max(dl,dr),False
deep,t=r(root)
return t
80ms,排名92%