二叉树的层序遍历(python年度更新版)
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
用一个size来记录每一层的节点数,以保证不同层次的结点可以分开
for循环中定义的tmp使用完后会重新赋值,也就是重置。
class Solution(object):
def levelOrder(self, root):
res = []
#用于存放最后的结果
queue = [root]
while queue:
size = len(queue)
#记录每一层的结点数
tmp = []
#设置一个临时队列用于存放每一层的结果
for i in range(size):
cur_node = queue.pop(0)
#将这一层的结点加入临时队列中
tmp.append(cur_node.val)
#并确保加入的结点的子结点加入到queue队列中
if cur_node.left:
queue.append(cur_node.left)
if cur_node.right:
queue.append(cur_node.right)
res.append(tmp)
#每层结束时,将临时队列加入到res中
return res