текстовое представление - PullRequest
1 голос
/ 04 января 2011

Я создал программу семейного древа, которая позволяет вам добавлять отношения к узлам (мать, отец, партнер и братья и сестры).Это позволяет построить дерево.ну по крайней мере ссылки будут сделаны.

Моя проблема в том, что я должен представлять дерево в текстовом виде.Это оказывается очень сложно.Я думал о том, чтобы позволить отображать предков и потомков для определенного узла, но это оказывается трудным, особенно когда существует более двух поколений для отображения предков (прародители и выше).

Чтобы прояснить ситуацию, я подумал об использовании структуры файлового дерева, но попал в беспорядок при отображении для прадедов.

Я могу предоставить источник, если кто-то захочет его увидеть.


Я имею в виду, что использование файловой структуры начинается с пары людей: например,

GRANDAD & GRANDMA--- DAD------МНЕ------СЕСТРА---ТЕТЯ------ДВОЮРОДНАЯ СЕСТРА------ДВОЮРОДНАЯ СЕСТРА

Это было бы для того, чтобы показать моих предков на стороне моего отца (включая меня).Мой вопрос: что произойдет, если у обоих моих дедушек и бабушек есть родители?Как бы я представлял такие отношения с вышеуказанной структурой?Я должен был бы показать своих прапрадедов, но было бы два набора!Один для моей бабушки и один для моей бабушки.Корень был разделен на две части, если вы понимаете, что я имею в виду ...

Я думаю об ограничении функции "показывать предков", чтобы показывать только двумя поколениями выше.Это означает, что пользователь может перемещаться по дереву и идентифицировать своих прародителей, выбирая их родительские узлы и отображая своих предков - но это кажется трудоемким и не очень интуитивным.

1 Ответ

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

Следующий метод может делать то, что вы хотите.Он напечатает дерево в иерархической структуре с вкладками:

public void printTree(Node root, int tabLevel, PrintStream out){
    for(int i =0;i < tabLevel; i++) out.print("\t");
    out.println(root)
    for(Node n: root.getChildren())
        printTree(n, tabLevel + 1, out);
}

Вы бы назвали это так:

printTree(rootNode, 0, System.out);

Это не учитывает всех сложностейгенеалогическое древо, но оно должно послужить хорошим началом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...