LeetCode面试题32-III.从上到下打印二叉树三【剑指Offer】【Medium】【Python】】【二叉树】【BFS】问题请实现一个函数,将二叉树按照zigzag顺序打印,即第一行从左打印toright,第二层从右到左打印,第三行从右到左打印。按从左到右的顺序打印,其他行依此类推。例如:给定一棵二叉树:[3,9,20,null,null,15,7],3/\920/\157返回其层次遍历结果:[[3],[20,9],[15,7]]提示:节点总数<=1000IdeaBFS当队列不为空时:当前层打印周期:队列第一个元素出队,记录为node添加node.val到tail/headtemp的根据flag如果左(右)子节点不为空,则将左(右)子节点加入队列,将当前temp中的所有元素加入到res中时间复杂度:O(n),n为二叉树中的节点数。空间复杂度:O(n),其中n是二叉树中的节点数。Python3代码#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=Noneclass解决方案:deflevelOrder(self,root:TreeNode)->List[List[int]]:importcollectionsifnotroot:return[]res,q=[],collections.deque()#做校验判断flag=Falseq.append(root)whileq:#输出它是一个二维数组temp=[]flag=notflagforxinrange(len(q)):node=q.popleft()#tailinsertionifflag:temp.append(node.val)#headinsertionelse:temp.insert(0,node.val)如果node.left:q.append(node.left)如果node.right:q.append(node.right)res.append(temp)返回resGitHublinkPython
