在n-tree树中查找最高值

时间:2011-01-04 19:17:04

标签: recursion tree binary-tree

我有一个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方法需要打印代数。

然而,上面是一个小马车。它获取叶子生成然后返回并覆盖生成父节点的叶子生成。任何线索为什么?

1 个答案:

答案 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;
}