从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
在层序遍历的基础上考虑如何区分每一行,可以设置两个变量,一个记录当前层还没有打印的结点个数,一个记录下一层需要打印的结点个数。
# -*- 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
array = []
if pRoot:
queue = [pRoot]
i = 0
temp = []
toBePrinted = 1
nextLevel = 0
while i < len(queue):
temp.append(queue[i].val)
toBePrinted -= 1
if queue[i].left:
queue.append(queue[i].left)
nextLevel += 1
if queue[i].right:
queue.append(queue[i].right)
nextLevel += 1
if toBePrinted == 0:
array.append(temp)
temp = []
toBePrinted = nextLevel
nextLevel = 0
i += 1
return array