给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
例:
输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]
解析:
运用队列的思想。每次大循环就是一层,每从队列中出队一个数就将他的子节点加入队列,每一层便利玩就将便利的值加入结果中。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def levelOrder(self, root):
"""
:type root: TreeNode
:rtype: List[List[int]]
"""
res = [] # 结果
if root :
queue = [root] # 第一层
else:
return res
while len(queue): # 当下一层没有子节点后停止遍历
n = len(queue)
r = []
for _ in range(n):
node = queue.pop(0) # 弹出第一个值
r.append(node.val)
if node.left: # 左子树判断
queue.append(node.left)
if node.right: # 右子树判断
queue.append(node.right)
res.append(r) # 加入一层的结果
return res