Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用递归计算树中的最高级别?_Java_Recursion_Tree_Parent Child - Fatal编程技术网

Java 如何使用递归计算树中的最高级别?

Java 如何使用递归计算树中的最高级别?,java,recursion,tree,parent-child,Java,Recursion,Tree,Parent Child,这就是任务。 我们有一个类,叫做NODE,实例是NODE。 这个节点有很多子节点,这些子节点也有很多子节点,等等。 我怎么能数出这棵树的最高等级呢? 等等: 节点->child1->child1.1->child1.1.1,child1.1.2->child1.1.2.1 节点->子节点2 节点->儿童3->儿童3.1,儿童3.2->儿童3.2.1 此树中的最高级别为4(child1.1.2.1的级别,节点的级别为0) 请帮帮我! 我知道,我应该使用递归方法,但我不知道如何,如果有人能解决这

这就是任务。 我们有一个类,叫做NODE,实例是NODE。 这个节点有很多子节点,这些子节点也有很多子节点,等等。 我怎么能数出这棵树的最高等级呢? 等等:

  • 节点->child1->child1.1->child1.1.1,child1.1.2->child1.1.2.1
  • 节点->子节点2
  • 节点->儿童3->儿童3.1,儿童3.2->儿童3.2.1
此树中的最高级别为4(child1.1.2.1的级别,节点的级别为0) 请帮帮我! 我知道,我应该使用递归方法,但我不知道如何,如果有人能解决这个问题,并编写一个代码。。。请 非常感谢。 该方法应以以下内容开始:

public int maxLevel(NODE node){...

此方法为基本情况(具有0个子项)返回级别1:


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

此方法为基本情况返回1级(具有0个子项):


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

您可以尝试以下操作:

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;
}
publicstaticintmaxlevel(节点){
如果(node.childrence.length==0)返回1;
int max=maxLevel(node.children[0]);
for(int i=1;imax)max=n;
}
返回最大值+1;
}

其中
node.children
是由
node
的子节点组成的数组。您可以尝试以下操作:

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;
}
publicstaticintmaxlevel(节点){
如果(node.childrence.length==0)返回1;
int max=maxLevel(node.children[0]);
for(int i=1;imax)max=n;
}
返回最大值+1;
}

其中
node.children
是由
node

的子节点组成的数组,因此每个
节点
都包含一个其他
节点
的数组。能否显示节点类的代码?最好将其命名为“节点”-所有大写的类名都是奇数。因此,每个
节点
都包含一个其他
节点
的数组。您可以显示节点类的代码吗?也许把它命名为“节点”会更好——对于类名来说,所有的大写字母都是奇怪的。这也会好吗?“public int maxLevel(Node-Node)”和for是“for(Node-child:Node.childs){maxChildLevel=Math.max(maxChildLevel,maxLevel(child));…”@victorio也可以,但是如果它需要一个
节点,而不是在
节点上调用的实例方法,那么这个方法看起来应该是
静态的
。你如何计算级别?你能写一个简单的代码吗?@victorio这是一个不同的问题,但是你应该能够通过应用到目前为止,您已经了解了递归。这是否也很好?“public int maxLevel(Node Node)”和for是“for(Node child:Node.childs){maxChildLevel=Math.max(maxChildLevel,maxLevel(child));”@victorio也可以,但是如果它需要一个
节点,而不是在
节点上调用的实例方法,那么这个方法看起来应该是
静态的
。你如何计算级别?你能写一个简单的代码吗?@victorio这是一个不同的问题,但是你应该能够通过应用首先,您已经了解了递归。谢谢!您如何对级别进行求和?您可以编写一个简单的代码吗?谢谢!您如何对级别进行求和?您可以编写一个简单的代码吗?