mick8569 | Salut à tous!
Voila mon problème :
Je suis en train de modéliser un arbre (binaire) en java.
J'ai donc une classe que l'on appelera arbre.
Pour les noeuds c'est un peu spécial, car il y a deux types de noeuds dans l'arbre. j'ai donc crée trois classes :
- une classe Mère : Node
- Deux classes Filles : InternalNode et LeafNode
Code :
- public class Node
- {
- Node sonLeft;
- Node sonRight;
- .....
- .....
- }
|
Code :
- public class LeafNode
- {
- float [] donnee;
- public LeafNode (Node sonLeft, Node sonRight, float[] donnee)
- {
- .....
- }
|
Code :
- public class InternalNode
- {
- int donnee;
- public LeafNode (Node sonLeft, Node sonRight, int donnee)
- {
- .....
- }
|
Code :
- public class Arbre
- {
- Node root;
- public Arbre (float[]donnee)
- {
- this.root = new LeafNode (null, null, donnee);
- }
- }
|
et dans une fonction de la classe Arbre, il faudrait que je modifie les noeuds :
Code :
- public boolean Modif (float[] donnee, float[] donnee1, float[] donnee2, int axe)
- {
- Node leNoeud = rechercheNoeud (donnee); // Fonction qui marche correctement
- if (leNoeud != null)
- {
- Node sonLeft = new LeafNode (null, null, donnee1);
- Node sonRight = new LeafNode (null, null, donnee2);
- leNoeud = new internalNode (sonLeft, sonRight, axe);
- return true;
- }
- return false;
- }
|
Le problème est que lorsque j'appelle cette fonction Modif, je n'ai pas les résultats des modifications (par exemple j'initialise avec le noeud root et après l'appel de cette fonction le noeud root est encore un noeud feuille alors que je voudrais qu'il soit du type InternalNode).
Je comprends très bien le problème puisqu'à mon avis à la fin de cette fonction les variables (leNoeud, sonLeft et sonRight) sont détruites ce qui fait que je ne récupère rien.
Mais je ne vois pas comment faire pour pouvoir récupérer tout ce que je veux (en C++, j'utiliserai des pointeurs mais la...).
Voila j'espere que je me suis bien fait comprendre et si quelqu'un sait comment faire, je suis preneur!
Merci d'avance! |