题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
思路
大体可以按照把二叉树打印成多行那道题去做
- 在循环前先定义一个变量i(i=0),用于记录当前层是奇数还是偶数
- 奇数从左到右,偶数从右到左打印
# -*- 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]
i=0
while queue:
curlevel=[]
nextlevel=[]
for node in queue:
curlevel.append(node.val)
if node.left:
nextlevel.append(node.left)
if node.right:
nextlevel.append(node.right)
queue=nextlevel
i+=1
if i%2!=0:
res.append(curlevel)
else:
res.append(curlevel[::-1])
return res
测试用例
if __name__=='__main__':
s=Solution()
# 构建二叉树
root=TreeNode(1)
node1=TreeNode(2)
node2=TreeNode(3)
node3=TreeNode(4)
node4=TreeNode(5)
node5=TreeNode(6)
node6=TreeNode(7)
root.left=node1
root.right=node2
node1.left=node3
node1.right=node4
node2.left=node5
node2.right=node6
node3.left=node3.right=node4.left=node4.right=node5.left=node5.right=node6.left=node6.right=None
# 调用函数
print(s.Print(root))