Java 如何使用递归计算树中的最高级别?
这就是任务。 我们有一个类,叫做NODE,实例是NODE。 这个节点有很多子节点,这些子节点也有很多子节点,等等。 我怎么能数出这棵树的最高等级呢? 等等: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) 请帮帮我! 我知道,我应该使用递归方法,但我不知道如何,如果有人能解决这
- 节点->child1->child1.1->child1.1.1,child1.1.2->child1.1.2.1
- 节点->子节点2
- 节点->儿童3->儿童3.1,儿童3.2->儿童3.2.1
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这是一个不同的问题,但是你应该能够通过应用首先,您已经了解了递归。谢谢!您如何对级别进行求和?您可以编写一个简单的代码吗?谢谢!您如何对级别进行求和?您可以编写一个简单的代码吗?