题目
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)
示例:
3
/ \
9 20
/ \
15 7
[
[3],
[9,20],
[15,7]
]
思路
使用队列,先进先出。由于题目的输出要求相同层要在一个二维列表的同一个列表里,故使用level来标记当前层
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def __init__(self):
self.queue = []
self.ans = [[]]
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root: return []
self.queue.append((0,root))
cur_level = 0
while self.queue:
level, cur = self.queue.pop(0)
if cur.left: self.queue.append((level+1, cur.left))
if cur.right: self.queue.append((level+1, cur.right))
if cur_level != level:
self.ans.append([cur.val])
else:
self.ans[level].append(cur.val)
cur_level = level
return self.ans