📅  最后修改于: 2023-12-03 15:33:16.033000             🧑  作者: Mango
在 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 低。通过遍历同一层级的节点找到最大值并存储到结果列表中即可。