我有一个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;
}

希望这有帮助:)

07-24 15:35