[力扣] 二叉树的层序遍历
广度优先算法,遍历每一层的节点
例题: 102. 二叉树的层序遍历
# 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 root == None: return []
if root.left == None and root.right == None: return [[root.val]]
import collections
q = collections.deque() # 队列
res = []
q.append(root) # 首先将根节点加入队列里中
while q:
tmp = []
for _ in range(len(q)): # 遍历每一层,将节点值加入列表,将子节点加入队列
cur = q.popleft()
tmp.append(cur.val)
if cur.left: q.append(cur.left)
if cur.right: q.append(cur.right)
res.append(tmp) # 追加每一层的节点
return res