给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
from collections import deque
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
# 深度优先遍历可用栈实现
# 广度优先遍历可用队列实现,队列满足一层一层遍历的逻辑
result = []
if not root:
return result
que = deque([root])
while que:
res = []
for _ in range(len(que)):
cur = que.popleft()
res.append(cur.val)
#将下一层的结点加入que
if cur.left:
que.append(cur.left)
if cur.right:
que.append(cur.right)
#将本层遍历的结点放入result
result.append(res)
return result