Нахождение наибольшего значения в n -ом дереве - PullRequest
0 голосов
/ 04 января 2011

У меня есть 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 Ответ

1 голос
/ 04 января 2011

Сделайте это: 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; }

...