给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
第一次的代码:
广度优先搜索,tr代表下一层的节点,当下一层节点空时,结束while循环,tv代表当前层的节点的值,即上一层所记录的tr的节点的值,av记录所有节点的值。
if not root:
return []
tr=[root]#下一层首先为root
tv=[]
av=[]
while tr:#当没有下一层时,迭代结束
nr=[]#记录下一层的节点
for i in tr:#当前层的每一个节点,记录它的左右子树,即下一层
if i.left:#记录非空子树
nr.append(i.left)
if i.right:
nr.append(i.right)
tv.append(i.val)#记录当前节点值
tr=nr[:]#遍历完下一层节点,交给tr
av.append(tv)#保存当前层所有节点值
tv=[]#初始化值列表
return av
20ms,排名99%