Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
第一次的代码:
迭代
if not root :
return []
tr=[root]
tv=[]
av=[]
while tr:
m=[]
for i in tr:#记录下一层的节点
if i.left:m.append(i.left)
if i.right:m.append(i.right)
tv.append(i.val)
tr=m[:]
av.append(tv)
tv=[]
return av[::-1]
#BFS,把结果反过来就行了
40ms,排名94%
当然递归可行:
def c(tr):
if not tr:
return []
m=[]
tv=[]
for i in tr:#记录下一层的节点
if i.left:m.append(i.left)
if i.right:m.append(i.right)
tv.append(i.val)#当前层的值
return [tv]+c(m)#当前层的值+下面的值
if not root:return []
return c([root])[::-1]#取反就好了
#当然BFS写成递归也是可以的,注意返回值,输入值是列表
36ms,排名99%