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
| #include <iostream>
using namespace std;
typedef struct noeud noeud;
struct noeud {
int valeur;
noeud *fils_gauche;
noeud *fils_droite;
};
using arbreBinaire = noeud *;
void affiche(arbreBinaire);
noeud* getPtrNoeud(int, arbreBinaire);
int main() {
noeud *n1 = new noeud { 1, nullptr, nullptr };
noeud *n2 = new noeud { 8, nullptr, nullptr };
noeud *n3 = new noeud { 4, nullptr, nullptr };
noeud *n4 = new noeud { 6, nullptr, nullptr };
noeud *n5 = new noeud { 12, nullptr, nullptr };
noeud *n6 = new noeud { 7, nullptr, nullptr };
noeud *n7 = new noeud { 15, n1, n2 };
noeud *n8 = new noeud { 3, n3, n4 };
noeud *n9 = new noeud { 14, n5, n6 };
noeud *n10 = new noeud { 9, n7, n8 };
noeud *n11 = new noeud { 16, n9, nullptr };
noeud *n12 = new noeud { 20, n10, n11 };
arbreBinaire ab = n12;
affiche(ab);
cout << endl;
noeud *n = new noeud;
n = getPtrNoeud(4, ab);
cout << "Résultat : " << n->valeur << endl;
return 0;
}
void affiche(arbreBinaire ab) {
if (ab != nullptr) {
cout << ab->valeur << " ";
if (ab->fils_gauche != nullptr) {
cout << " ( ";
affiche(ab->fils_gauche);
}
if (ab->fils_gauche != nullptr || ab->fils_droite != nullptr) {
cout << ", ";
}
if (ab->fils_droite != nullptr) {
affiche(ab->fils_droite);
cout << " ) ";
}
}
}
noeud* getPtrNoeud(int v, arbreBinaire ab) {
cout << "valeur testée : " << ab->valeur << endl;
if (ab->valeur == v) {
cout << "Trouvé valeur " << ab->valeur << " en " << ab << endl;
return ab;
}
if (ab->fils_gauche != nullptr) {
getPtrNoeud(v, ab->fils_gauche);
}
if (ab->fils_droite != nullptr) {
getPtrNoeud(v, ab->fils_droite);
}
} |