2

于是就有了使命。我们有一个类,叫 NODE,实例是“node”。这个节点有很多孩子,这些孩子也有很多孩子,等等等等。我怎么能算出这棵树的最高层呢?ETC:

  • 节点 -> child1 -> child1.1 -> child1.1.1,child 1.1.2 -> child1.1.2.1
  • 节点-> child2
  • 节点 -> child3 -> child3.1,child3.2 -> child3.2.1

这棵树中的最高级别是4(child1.1.2.1的级别,节点的级别是0)请帮帮我!我知道,我应该使用递归方法,但我不知道如何,如果有人可以解决这个问题,并编写代码......请......谢谢!该方法应从以下开始:

public int maxLevel(NODE node){...
4

2 回答 2

3

此方法返回基本情况的级别 1(有 0 个孩子):

public int maxLevel() {
    int maxChildLevel = 0;
    for (Node child : children) {
        maxChildLevel = Math.max(maxChildLevel, child.maxLevel());
    }
    return maxChildLevel + 1;
}

此示例旨在声明maxLevel为 的实例方法Node,因此无需将 aNode作为参数。

于 2012-10-07T21:57:20.103 回答
1

你可以尝试这样的事情:

public static int maxLevel(Node node) {
    if (node.children.length == 0) return 1;

    int max = maxLevel(node.children[0]);
    for (int i = 1 ; i < node.children.length ; i++) {
        int n = maxLevel(node.children[i]);
        if (n > max) max = n;
    }

    return max + 1;
}

其中node.children是由 的子节点组成的数组node

于 2012-10-07T22:02:02.053 回答