当前位置: 首页 > 后端技术 > Python

力扣-0515.求树的每一行中的最大值【Python】

时间:2023-03-26 13:52:16 Python

问题LeetCode给定一棵二叉树的根,返回树中每一行最大值的数组(从0开始索引)。例1:输入:root=[1,3,2,5,3,null,9]输出:[1,3,9]示例2:输入:root=[1,2,3]输出:[1,3]示例3:输入:root=[1]输出:[1]示例4:输入:root=[1,null,2]输出:[1,2]示例5:输入:root=[]输出:[]约束:树中的节点数将在[0,104]范围内。-231<=Node.val<=231-1问题Leet你需要在二叉树的每一行中找到最大值。例子:输入:1/\32/\\539输出:[1,3,9]思路BFS用BFS遍历每一层,将这一层的最大值加入res。Python3code#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclass解决方案:deflargestValues(self,root:TreeNode)->List[int]:importcollectionsifnotroot:return[]res=[]q=collections.deque()q.append(root)whileq:size=len(q)tmp_max=-float('inf')#取每一层的最大值foriinrange(size):node=q.popleft()tmp_max=max(tmp_max,node.val)#遍历一层oftrees完成,添加层的最大值ifi==size-1:res.append(tmp_max)ifnode.left:q.append(node.left)ifnode.right:q.append(node.right)返回resGitHub链接Python