Salut, je dois realiser un prog avec un arbre quelconque à 3 branches. Je bloque sur l'ajout de nouveau noeud aux branches (gauche droite et centre) je ne vois pas comment déplacer le pointeur à ces branches pour l'ajout du noeud. J'adorerai avoir une petite explication. Voilà mon bout de code3 (ça ce passe dans la methde ajouter noeud). Merci d'avance dans tous les cas.
source cpp
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 #include "Noeud.h" Arbre::Arbre() { m_pRacine = m_pCourant = NULL; m_nbNoeud = 0; } int Arbre::ajouterPremierNoeud(int data) { Noeud * pNouveau = new Noeud(data); //creation d'un nouveau noeud if(pNouveau==NULL) //si plus de memoire retourne 0 return 0; pNouveau->m_pPere = m_pRacine; // m_pPere prend l'adresse de m_pRacine m_pRacine = pNouveau; //le pointeur m_pRacine recupere le neoud pNouveau m_nbNoeud++; //un nouveau noeud est nee return 1; //tout c'est bien passe retourne 1 } int Arbre::ajouterNoeud(int data) { if(m_nbNoeud==0)//si le nombre de noeud est egal a zeros alors le premier noeud est le sommet de laborescance return ajouterPremierNoeud(data); // cree le premier noeud et on quitte la methode if(pNouveau->m_pBrancheGauche==NULL) // si la branche de gauche est vide on remplis celle la { Noeud * pNouveau = new Noeud(data); //sinon on cree un nouveau noeud avec la donee if(pNouveau == NULL) // si plus de memoire return 0; m_nbNoeud++; return 1; } else if(pNouveau->m_pBrancheCentre==NULL) // si la branche de gauche est prise est celle du centre ne l'est pas on la remplis { Noeud * pNouveau = new Noeud(data); //sinon on cree un nouveau noeud avec la donee if(pNouveau == NULL) // si plus de memoire return 0; m_nbNoeud++; return 1; } else // sinon on remplis celle de droite { Noeud * pNouveau = new Noeud(data); //sinon on cree un nouveau noeud avec la donee if(pNouveau == NULL) // si plus de memoire return 0; m_nbNoeud++; return 1; } }
.h
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 #ifndef NOEUD_H_INCLUDED #define NOEUD_H_INCLUDED #include <stdlib.h> class Arbre; class Noeud { friend class Arbre; private : int m_data; // Les données génériques du noeud. Noeud * m_pPere; // Le Noeud * m_pBrancheGauche; //pointeur de la branche de gauche Noeud * m_pBrancheCentre; //pointeur de la branche central Noeud * m_pBrancheDroite; //pointeur de la branche de droite Noeud( int & data){ m_data = data; m_pBrancheGauche = m_pBrancheCentre = m_pBrancheDroite = m_pPere = NULL;} // Constructeur Initialisation. }; class Arbre { private: Noeud* m_pRacine; //La racine de l'abre Noeud* m_pCourant; //L'endroit ou se trouve le pointeur int m_nbNoeud; //Le nombre de noeud dans l'arborescance public: Arbre(); inline ~Arbre(); void detruire_arbre(Noeud * arbre); void viderArbre(); int ajouterPremierNoeud( int data); int ajouterNoeud( int data); void parcours_prefixe(); void parcours_infixe(); void parcours_suffixe(); int ajouterGauche(); int ajouterCentre(); int ajouterDroite(); }; #endif // NOEUD_H_INCLUDED
Partager