我有一个n元树,由
public class NTN P {
public int value;
public Set<NTN> children;
}
我想找到这样一棵n元树的最大值。假设它是一个简单的整数树,其值是:[父:1个子:2, 3, 4个]:父:2个子:5, 6 [父:4个子7, 8, 9 ],最大值是9。我不知道如何用原型编写一个方法来找到最大值:
public static int maximum(NTN t);
从我的尝试来看:
public static int maximum(NTN t) {
int max = 0;
for (NTN e : t.children) {
if (e.value > max)
max = e.value;
}
return max;
}
上面的代码将返回4的最大值,这意味着它只检查T的孩子,而不是后续的一组孩子。在这种情况下,它不会检查4、[7、8、9]和2、[5、6]的子集合如何更改它,以便该方法找到所有后续子项的最大值?
最佳答案
public static int maximum(NTN t) {
int max = t.value;
Set<NTN> children = t.children;
// only check if this node is not a leaf
if (children != null && !children.isEmpty) {
for (NTN e : children) {
// here is the recursion
int maxNext = maximum(e);
if (maxNext > max) max = maxNext;
}
}
return max;
}
希望这有帮助:)