summaryrefslogtreecommitdiff
path: root/sem_4/Algo/TP4/AB.cpp
blob: 379387e17c16a13d7d3aa5c992f36d63fdd8d431 (plain)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
//AB.cpp

#include "AB.h"


Sommet::Sommet(Valeur v){
  racine = v;
  SAG = NULL;
  SAD = NULL;
  Pere = NULL;
}

Sommet::Sommet(Sommet& s){
  racine = s.racine;
  SAG = s.SAG;
  SAD = s.SAD;

}


bool Sommet::FeuilleP(){
  if (SAG == SAD && SAG == NULL){
    return true;
  }
  return false;
}


void Sommet::SupprimerSAG(){
  if (!FeuilleP()){
    SAG->SupprimerSAG();
    delete SAG;
  }
}


void Sommet::SupprimerSAD(){
  if (!FeuilleP()){
    SAD->SupprimerSAD();
    delete SAD;
  }
}


void Sommet::GrefferSAG(AB g){
  SupprimerSAG();
  SAG = g;
  g->Pere = this;
  g->FGP= true;
 }

void Sommet::GrefferSAD(AB d){
  SupprimerSAD();
  SAD=d;
  d->Pere=this;
  d->FGP=false;
 }


void Sommet::RemplacerPourLePerePar(AB Ar){
  //le pere existe
  if ( FGP ){
  Pere->GrefferSAG(Ar);
}
else {
  Pere->GrefferSAD(Ar);
}
}


/*Question 1 : L'etiquette d'un sommet est dans "racine", on voit que l'arbo est binaire car chaque sommet ne peut avoir que 2 fils au maximum.
*/