leetcode_515 在每个树行中找最大值

75 阅读1分钟

要求

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

示例1:

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
解释:
          1
         / \
        3   2
       / \   \  
      5   3   9 

示例2:

输入: root = [1,2,3]
输出: [1,3]
解释:
          1
         / \
        2   3

示例3:

输入: root = [1]
输出: [1]

示例4:

输入: root = [1,null,2]
输出: [1,2]
解释:      
           1 
            \
             2     

示例5:

输入: root = []
输出: []

核心代码

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right
        
class Solution:
    def largestValues(self, root: TreeNode) -> List[int]:
        if not root:
            return []
        
        result = []
        next_layer = [root]

        while next_layer:
            temp_next_layer = []
            layer_values = []

            for node in next_layer:
                if not node:
                    continue
                
                layer_values.append(node.val)
                if node.left:
                    temp_next_layer.append(node.left)
                
                if node.right:
                    temp_next_layer.append(node.right)
                
            
            next_layer = temp_next_layer
            result.append(max(layer_values))
        
        return result

image.png

解题思路:这个题就是树的层次遍历,存储每一层的值,最后将每一层的值中的最大值输出。