Arborescence quelconque 3 branches
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:
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:
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 |