📅  最后修改于: 2023-12-03 15:33:04.962000             🧑  作者: Mango
在 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)。