2011-01-03 3 views
1

J'ai construit un programme d'arbre généalogique qui permet jusqu'à présent d'ajouter des relations aux nœuds (mère, père, partenaire &). Cela permet à l'arbre d'être construit. bien au moins les liens à faire.représentation de texte

Mon problème est que je dois représenter l'arbre textuellement. Cela s'avère très difficile. J'ai pensé permettre de montrer les ancêtres et les descendants pour un nœud particulier mais cela s'avère difficile, surtout quand il y a plus de deux générations pour afficher les ancêtres (arrière-grands-parents et ci-dessus).

Pour rendre les choses plus claires, j'ai pensé à utiliser une arborescence de fichiers, mais je me suis retrouvé dans un pétrin lors de l'affichage pour les grands-parents.

Je peux fournir la source si quelqu'un veut le voir.


Ce que je veux dire utilise une structure de fichier commence avec une paire de de personnes: par exemple

GRANDAD & MAMIE
--- ------ DAD
ME
------ SISTER
--- ------ TANTE
COUSIN
- ---- COUSIN

Ce serait pour montrer mes ancêtres du côté de mes pères (inclus de moi). Ma question est la suivante: que se passe-t-il si mes deux grands-parents ont des parents? Comment représenterais-je de telles relations avec la structure ci-dessus? Je devrais montrer mes arrière-grands-parents mais il y aurait deux sets! Un pour ma grand-mère et un pour mon grand-père. La racine a été divisée en deux si vous voyez ce que je veux dire ....

Je pensais à limiter la fonction 'Afficher les ancêtres' pour montrer seulement 2 générations ci-dessus. Ce qui signifie qu'un utilisateur peut traverser l'arbre et identifier ses arrière-grands-parents en sélectionnant leurs nœuds parents et en affichant leurs ancêtres - mais cela semble laborieux et pas très intuitif.

Répondre

0

La méthode suivante peut faire ce que vous voulez. Il imprimera un arbre dans une structure hiérarchique à onglets:

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); 
} 

Vous appelleriez comme ceci:

printTree(rootNode, 0, System.out); 

Cela ne prend pas en compte toutes les complexités d'un arbre généalogique, mais il devrait fournir un bon endroit pour commencer.

+0

peut-être que j'aurais dû vous répondre je place d'un swering ma propre question. Oops! ce que je dis est que je suppose que je suis confus sur la façon d'afficher les grands-parents pour un nœud particulier. – user559142

+0

@user, Un noeud n'aura pas de grands-parents par lui-même. Un nœud n'aura que des parents et des enfants. Donc, pour montrer les grands-parents d'un nœud, vous devez afficher les parents de ce nœud. Et puis les parents du parent, et ensuite les parents de leurs parents. Cela a-t-il du sens? – jjnguy