【题目描述】
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
【解题思路】
这道题建立在【剑指offer】把二叉树打印成多行的基础上,只要在偶数行取反即可,用Python实现的代码如下:
# -*- coding:utf-8 -*-
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
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:
if last_layer % 2 == 0: temp.reverse()
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)
if last_layer % 2 == 0: temp.reverse()
output.append(temp)
return output