题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解题思路
这道题其实是分层打印二叉树的进阶版,唯一的不同就是偶数层是列表倒序,奇数层是列表正序;只要在上道题目代码的基础上添加一个判断符,判断是奇数层还是偶数层
代码
class Solution:
def Print(self, pRoot):
# write code here
result = []
queue = []
if pRoot == None:
return result
queue.append(pRoot)
oddLevel = True
while queue:
result_layer = []
nextLayernodeList = []
oddLevel = not oddLevel
for node in queue:
result_layer.append(node.val)
if node.left != None:
nextLayernodeList.append(node.left)
if node.right != None:
nextLayernodeList.append(node.right)
queue = nextLayernodeList
result.append(result_layer[::-1]) if oddLevel else result.append(result_layer)
return result
oddLevel就是奇数层判断符,一开始是True,后面依次是False、True、False