【题目描述】
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
【解题思路】
首先,按层打印二叉树即是二叉树的层序遍历,用队列实现即可。本题要求每一层输出一行,就需要多加一个层次信息,所以需要额外创建一个保存结点层次信息的队列,和结点队列同步出队入队即可。相同层次的结点保存在一个temp变量中,将所有的temp存储到res中,最终返回res即可。用Python实现的代码如下:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回二维列表[[1,2],[4,5]]
def Print(self, pRoot):
# write code here
if pRoot == None:
return []
queue, queue_layer = [],[]
output, temp = [],[]
queue.append(pRoot)
queue_layer.append(1)
last_layer = 1
while queue:
root = queue.pop(0)
layer = queue_layer.pop(0)
if layer != last_layer:
output.append(temp)
temp = []
temp.append(root.val)
last_layer = layer
if root.left:
queue.append(root.left)
queue_layer.append(layer+1)
if root.right:
queue.append(root.right)
queue_layer.append(layer+1)
output.append(temp)
return output