题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解题思路
这道题其实是分层打印二叉树的进阶版,唯一的不同就是偶数层是列表倒序,奇数层是列表正序;只要在上道题目代码的基础上添加一个判断符,判断是奇数层还是偶数层
代码
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