题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
# -*- 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 []
q=[pRoot]
results=[]
qtmp=[]
odd=True
while q!=[]:
tmp=[]
for i in q:
tmp.append(i.val)
if i.left:
qtmp.append(i.left)
if i.right:
qtmp.append(i.right)
q=qtmp
if odd==True:
odd=False
else:
tmp=tmp[::-1]
odd=True
results.append(tmp)
qtmp=[]
return results
用一个队列来保存正常的顺序,用一个odd来计数奇偶层,队列是正常的队列,只不过保存到resutls里的时候按奇偶顺序进行reverse保存。