JZ78 把二叉树打印成多行
描述
给定一个节点数为 n 二叉树,要求从上到下按层打印二叉树的 val 值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中返回。
例如:
给定的二叉树是{1,2,3,#,#,4,5}
该二叉树多行打印层序遍历的结果是
[
[1],
[2,3],
[4,5]
]
数据范围:二叉树的节点数0≤n≤1000,0≤val≤1000
要求:空间复杂度 O(n),时间复杂度 O(n)
思路:二叉树的层序遍历:
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def Print(self , pRoot: TreeNode) -> List[List[int]]:
if not pRoot : return []
queue = []
res = []
queue.append(pRoot)
while(queue!=[]):
layer = []
length = len(queue)
for i in range(length):
node = queue.pop(0)
layer.append(node.val)
if node.left: queue.append(node.left)
if node.right: queue.append(node.right)
res.append(layer)
return res