2010-02-18 3 views
2

Supposons que je construis un arbre en utilisant javax.swing.tree.DefaultMutableTreeNode et que j'ajoute N enfants à un nœud particulier. Je veux que les enfants soient dans un ordre particulier (basé sur Comparable/a Comparator personnalisé) comme un arbre de recherche, même si je les insère hors service, comme celui-ci:Arbre de recherche N-ary dans Java avec Comparatif userObject?

node.insert(child2); 
node.insert(child3); 
node.insert(child1); 

Mais DefaultMutableTreeNode ne fait pas de sorte de tri comme ça. Dans mon cas particulier, je connais même l'index désiré du noeud enfant dans le tableau du parent, mais j'ai essayé DefaultMutableTreeNode.insert et j'ai obtenu beaucoup d'ArrayIndexOutOfBoundsExceptions.

Quelqu'un peut-il recommander une bibliothèque qui fait ce dont j'ai besoin? Ou devrais-je écrire un arbre de recherche comme ça moi-même?

Répondre

1

Généralement, vous insérez des nœuds dans un arbre afin qu'il reste trié pour certains traversal order. Cela dépend de la topologie de l'arbre. Vous pouvez obtenir des idées d'implémentation à partir de How to Use Trees, Creating a Data Model. En particulier, "l'interface" TreeModel accepte tout type d'objet en tant que nœud d'arbre. Il ne nécessite pas que les nœuds soient représentés par des objets DefaultMutableTreeNode, ou même que les nœuds implémentent l'interface TreeNode. "

+0

à peine plus de dire – stacker

+0

J'ai fini par en écrire un moi-même, alors j'accepte votre réponse :) – Seth