从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:
给定二叉树: [3,9,20,null,null,15,7],
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
# 存储打印结果的列表
res_list = list()
# 存储广度优先遍历的节点
index_queue = list()
node_queue = list()
# 根节点的索引为0
index_queue.append(0)
node_queue.append(root)
self.bfs(index_queue, node_queue, res_list)
return res_list
def bfs(self, index_queue, node_queue, res_list):
if index_queue == [] or node_queue == []:
return []
else:
# print(queue)
index = index_queue.pop(0)
node = node_queue.pop(0)
# print(node)
if node is not None:
if index < len(res_list):
item = res_list[index]
item.append(node.val)
else:
res_list.append([node.val])
# 当前节点的下一层,则需要加1
index += 1
index_queue.append(index)
node_queue.append(node.left)
index_queue.append(index)
node_queue.append(node.right)
self.bfs(index_queue, node_queue, res_list)