LeetCode面试题32-II.从上到下打印二叉树二【简智Offer】【Easy】【Python】】【二叉树】【BFS】问题Likko从上到下逐层打印二叉树,同层节点打印在从左到右的顺序,每层打印一行。例如:给定一棵二叉树:[3,9,20,null,null,15,7],3/\920/\157返回其层次遍历结果:[[3],[9,20],[15,7]]提示:总节点数<=1000注:本题同主站102题。BFS当队列不为空时:当前层打印周期:队列的第一个元素出队,记录为节点。在temp的末尾添加node.val如果左(右)子节点不为空,则将左(右)子节点添加到队列中,将当前temp中的所有元素添加到res中时间复杂度:O(n),n是二叉树中的节点数。空间复杂度:O(n),其中n是二叉树中的节点数。Python3代码#定义一个二叉树节点。#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()q.append(root)whileq:#输出是二维数组temp=[]forxinrange(len(q)):node=q.popleft()temp.append(node.val)ifnode.left:q.append(node.left)ifnode.right:q.append(node.right)res.append(temp)returnresGitHub链接Python
