题目:
- 从上到下按层打印二叉树,同一层节点从左向右输出,每一层输出一行
代码(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 []
queue1 = [pRoot] # 定义队列1,把根结点赋值给他
queue2 = [] # 定义队列2
ret = [] # 最终的结果
while queue1 or queue2: # 若两个队列其中一个不空,则一直循环:
if queue1: # 若队列1存在
tmpret = [] # 临时结果列表
while queue1: # 遍历队列1的所以元素
tmpNode = queue1[0] # 将头元素,赋值给tmpNode
tmpret.append(tmpNode.val) # 添加到临时结果列表
del queue1[0] # 删除头元素
if tmpNode.left: # 若tmpNode存在左节点
queue2.append(tmpNode.left) # 则将左节点赋值给队列2
if tmpNode.right: # 若tmpNode存在右节点
queue2.append(tmpNode.right) # 则将右节点赋值给队列2
ret.append(tmpret) # 添加到结果列表
if queue2: # 若队列2存在
tmpret = [] # 临时结果列表
while queue2: # 遍历队列2的所以元素
tmpNode = queue2[0] # 将头元素,赋值给tmpNode
tmpret.append(tmpNode.val) # 添加到临时结果列表
del queue2[0] # 删除头元素
if tmpNode.left: # 若tmpNode存在左节点
queue1.append(tmpNode.left) # 则将左节点赋值给队列1
if tmpNode.right: # 若tmpNode存在右节点
queue1.append(tmpNode.right) # 则将右节点赋值给队列1
ret.append(tmpret)
return ret