📌  相关文章
📜  N元树中每个级别的最大值(1)

📅  最后修改于: 2023-12-03 15:33:16.033000             🧑  作者: Mango

N元树中每个级别的最大值

简介

在 N 元树中,对于每个节点的子节点数量不确定。要求找到每个级别中的最大值并返回一个列表。

实现
算法

我们可以使用 BFS 的方式遍历整棵树。在同一层级的节点中,找到最大值并存储到结果列表中。

代码
class TreeNode:
    def __init__(self, val=0, children=None):
        self.val = val
        self.children = children if children is not None else []

def get_max_level_vals(root: TreeNode) -> List[int]:
    if not root:
        return []
    
    result = []
    queue = [root]
    
    while queue:
        level_size = len(queue)
        level_max = float('-inf')
        
        for _ in range(level_size):
            node = queue.pop(0)
            level_max = max(level_max, node.val)
            queue.extend(node.children)
        
        result.append(level_max)
    
    return result
复杂度

时间复杂度:$O(n)$,其中 $n$ 是树中的节点数量。

空间复杂度:$O(n)$,最坏情况下(满二叉树)队列中最多有 $\frac{n}{2}+1$ 个节点。

总结

在 N 元树中找到每个级别的最大值需要使用 BFS / DFS 遍历整棵树。BFS 算法是比较简单的一个方法,同时空间复杂度也比 DFS 低。通过遍历同一层级的节点找到最大值并存储到结果列表中即可。