题目:
剑指 Offer 32 - II. 从上到下打印二叉树 II。
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
链接:https://leetcode-cn.com/leetbook/read/illustrate-lcof/xswwvg/
本题与主站 102 题相同:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
示例:
例如:
给定二叉树: [3,9,20,null,null,15,7],
返回其层次遍历结果:
提示:节点总数 <= 1000
思路:
树的广度优先遍历。
首先将上一层节点存入队列,队列不为空时执行循环。遍历本层节点,设置一个临时的列表存储同层节点值,将下一层节点存入队列,本层节点遍历完后将临时列表中的结果追加的返回值列表中,继续下一循环。
代码:
# 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 = [], []
queue.append(root)
while queue:
temp = []
for i in range(len(queue)):
node = queue.pop(0)
temp.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(temp)
return res
时间复杂度O(n),空间复杂度O(n).