题目内容
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
题目思路
这是一个二叉树的层次遍历+偶数层翻转。我们先使用层次遍历得到结果,然后在偶数层(从0开始计数就是1,3...)进行翻转,最后输出。
程序代码
# -*- 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 not pRoot:
return []
res=[]
queue=[pRoot]
while queue:
val_lst=[]
for i in range(len(queue)):
tmp=queue.pop(0)
val_lst.append(tmp.val)
if tmp.left:
queue.append(tmp.left)
if tmp.right:
queue.append(tmp.right)
res.append(val_lst)
for i in range(1,len(res),2):
res[i]=res[i][::-1]
return res