L'arbre de la mise en œuvre en Java (racine, les parents et les enfants)
J'ai besoin de créer une arborescence de structure similaire comme l'image jointe en Java. J'ai trouvé certaines questions liées à celle-ci mais je n'ai pas trouvé de convaincant et bien expliqué réponse.
L'application se compose d'affaires dans les aliments super catégories (plats principaux, desserts et autres). Chacune de ces catégories peuvent avoir des éléments parents ou les enfants et ainsi de suite.
Vous devez vous connecter pour publier un commentaire.
Exemple:
Node<String> parentNode = new Node<String>("Parent"); \r
Node<String> parentNode = new Node<String>("Parent"); Node<String> childNode1 = new Node<String>("Child 1", parentNode); Node<String> childNode2 = new Node<String>("Child 2"); childNode2.setParent(parentNode); Node<String> grandchildNode = new Node<String>("Grandchild of parentNode. Child of childNode1", childNode1); List<Node<String>> childrenNodes = parentNode.getChildren();
equals
ethashCode
méthode?Accepté de répondre à jette un
java.lang.StackOverflowError
lors de l'appel de lasetParent
ouaddChild
méthodes.Ici est un peu plus simple de mise en œuvre sans ces bugs:
Quelques exemples:
Dans la accepté de répondre à
devrait être
sinon, le parent n'a pas l'enfant dans sa liste d'enfants
Voici mon implémentation en java pour votre condition.
Dans la classe treeNode j'ai utilisé generic array pour stocker l'arbre de données. nous pouvons également utiliser arraylist ou tableau dynamique pour stocker la valeur de cette arborescence.
Et la classe client pour la mise en œuvre.
SORTIE
Cet arbre n'est pas un arbre binaire, donc vous avez besoin d'un tableau de la les enfants les éléments, comme la Liste.
Puis créer les instances.
Dans réponse
il crée de la dépendance circulaire.Ceci peut être évité par la suppression des parents à l'intérieur des nœuds Enfants.
j'.e,
En utilisant le même exemple donné ci-dessus,la sortie sera comme ceci:
Le processus d'assemblage de nœuds de l'arborescence est similaire au processus de constitution des listes. Nous avons un constructeur de nœuds de l'arborescence qui initialise les variables d'instance.
Nous répartir les nœuds enfants d'abord:
Nous pouvons créer le nœud parent et le lier aux enfants en même temps: