题目:
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
思路:树的的广搜,借助队列。
题目要求按层存储,所以每次我们取出一层的元素,借助当前队列的长度可以很容易的完成。
- 根节点入队列 。
- 若队列不为空:得到队列长度l,从队列中取l个节点并把取出节点的左右子树入队列。
- 重复第二步直到队列为空。
代码:
# 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]]:
from queue import Queue
queue = Queue()
res = []
queue.put(root)
while not queue.empty():
temp = []
l = queue.qsize()
for i in range(l):
node = queue.get()
if node:
temp.append(node.val)
queue.put(node.left)
queue.put(node.right)
if temp:
res.append(temp)
return res