📜  N 叉树中的最大元素(1)

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

N 叉树中的最大元素

介绍

在 N 叉树(每个节点最多有 N 个孩子节点)中找到最大的元素值。

N 叉树的定义如下:

class Node {
    public int val;
    public List<Node> children;

    public Node() {}

    public Node(int _val) {
        val = _val;
    }

    public Node(int _val, List<Node> _children) {
        val = _val;
        children = _children;
    }
}
思路

我们可以利用深度优先搜索(DFS)来遍历 N 叉树。在遍历过程中,我们维护一个变量 maxValue 来记录遇到的最大值。

对于每个节点,我们先比较它的值和 maxValue,然后递归遍历它的子节点。遍历完子节点后,我们就可以得到以当前节点为根节点的子树中的最大值。

最终,maxValue 的值就是整棵 N 叉树中的最大元素。

代码实现
class Solution {
    public int maxDepth(Node root) {
        if (root == null) {
            return 0;
        }
        int maxValue = root.val;
        for (Node child : root.children) {
            maxValue = Math.max(maxValue, maxDepth(child));
        }
        return maxValue;
    }
}
复杂度分析

假设 N 叉树中共有 n 个节点,每个节点最多有 N 个子节点。

时间复杂度:遍历每个节点需要 O(n) 的时间复杂度。

空间复杂度:最坏情况下,整棵 N 叉树都是单链的,此时递归调用栈的深度为 O(n),空间复杂度也为 O(n)。