如何通过递归计算树中的最高级别?

时间:2012-10-07 21:49:58

标签: java recursion tree parent-child

所以有使命。 我们有一个类,调用NODE,实例是“节点”。 这个节点有很多孩子,这些孩子也有很多孩子等。 我怎么能算出这棵树的最高等级? 等:

  • 节点 - > child1 - > child1.1 - > child1.1.1,孩子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){...

2 个答案:

答案 0 :(得分:3)

此方法为基本案例(有0个孩子)返回1级别:

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

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

答案 1 :(得分: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的子节点组成的数组。