题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路
给定一个二叉树样例:
以上图的二叉树样例来说,需要说明的点是,题目需要的输出是形如[[1], [2,3], [4,5,6,7]]。因为之前做了这种题型的初级版本和高级版本,面对这道中级版本,就比较顺水推舟了,本文末尾将给出这种题型的三种不同难度的链接。
简单表述一下解题思路:利用列表存储二叉树每一层的节点,在读取列表中当前层节点的同时,存储下一层的节点以备用,以此类推。
Python代码
def Print(self, pRoot):
if not pRoot:
return []
resultList = []
curLayer = [pRoot]
while curLayer:
curList = []
nextLayer = []
for node in curLayer:
curList.append(node.val)
if node.left:
nextLayer.append(node.left)
if node.right:
nextLayer.append(node.right)
resultList.append(curList)
curLayer = nextLayer
return resultList