我正在尝试创建一种方法
public int getNumberOfChildNodes(int level)
,它将返回特定级别的多个子节点。下图的说明:Level 1 should return 2 (B and C) and level 2 should return 5 (D, E, F, G, H)
我已经创建了一个代码,该代码返回树的高度并返回所有子节点的数量,但是我不知道如何仅在特定级别上找到子节点的数量。谢谢!
import java.util.*;
public class Tree {
private String name;
private List<Tree> childNodes = new ArrayList<Tree>();
public Tree(String name) {
this.name = name;
}
public void addChildNode(Tree childNode) {
childNodes.add(childNode);
}
public int getNumberOfChildNodes() {
int result = 0;
for (Tree childNode : childNodes){
result += childNode.getNumberOfChildNodes();
}
return result + childNodes.size();
}
/*
public int getNumberOfChildNodes(int level) {
int result = 0;
for (Tree childNode : childNodes) {
result += childNode.getNumberOfChildNodes();
}
return result + childNodes.size(); }
*/
}
答案 0 :(得分:1)
尝试使用此递归函数:
public int getNumberOfChildNodes(int level) {
if(level == 0)
return childNodes.size();
int numOfChildren = 0;
for (Tree childNode : childNodes) {
numOfChildren += childNode.getNumberOfChildNodes(level-1);
}
return numOfChildren ;
}
想法是扫描每个级别。对于每个递归调用,我们将级别降低1。因此,当level==0
表示我们处于所需级别的节点中时,我们将返回该节点的size()
。
在此解决方案中,我假设每个节点的级别是距根的距离(即,根在0级且其子级在1级,依此类推)。