给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
image.png
解题思路:
- 用队列queue存储同一层的节点;
- 首先将root节点加入到queue,遍历该queue,将queue中的节点val写入tmp,并判断该node是否存在左叶子节点和右叶子节点,如果存在则写入queue,作为第二层的节点集合,下次遍历的就是该层的节点;
- 最后将tmp都写入到ans列表中。
Python3代码:
# 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]]:
if not root:
return []
res = []
queue = [root]
while queue:
size = len(queue)
tmp = []
for i in range(size):
node = queue.pop(0)
tmp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(tmp)
return res
网友评论