我有一个arraylist链接在树结构(准确的家谱)。每个节点都是包含生成字段的对象。我想找到树中最高代的叶子。我试过这个:
private int findHighestLeafGeneration(FamilyMember node, int gen){
if(node.getChildren().isEmpty()){
return gen;
}
for(int i = 0; i < node.getChildren().size(); i++){
gen = findHighestLeafGeneration(node.getChild(i), node.getChild(i).getGeneration());
}
return gen;
}
我这样称呼方法:
findHighestLeafGeneration(node, node.getGeneration());
这应该做的是获取族树的一个成员(一个节点)并打印该成员的所有后代。我的PrintDescendants方法需要打印代数。
然而,上面是一个小马车。它获取叶子生成然后返回并覆盖生成父节点的叶子生成。任何线索为什么?
答案 0 :(得分:1)
这样做:
private int findHighestLeafGeneration(FamilyMember node) {
int gen = node.getGeneration();
for(int i = 0; i < node.getChildren().size(); i++){
int highestChild = findHighestLeafGeneration(node.getChild(i));
if(highestChild > gen) {
gen = highestChild;
}
}
return gen;
}