Untitled

 avatar
unknown
plain_text
11 days ago
1.4 kB
5
Indexable
#include <iostream>
using namespace std;

struct Noeud {
	int valeur;
	Noeud* gauche;
	Noeud* droite;
};

Noeud* creerNoeud(int valeur){
	Noeud* nouveauNoeud = new Noeud;
	nouveauNoeud->valeur = valeur;
	nouveauNoeud->gauche = nullptr;
	nouveauNoeud->droite = nullptr;
	return nouveauNoeud;
}

Noeud* inserer(Noeud* racine, int valeur){ // copie, fiable
//2) void inserer(Noeud*& racine, int valeur){ // optimise les blocs
	if (racine == nullptr){
		return creerNoeud(valeur);
	} else {
		if (valeur < racine->valeur) {
			racine->gauche = inserer(racine->gauche, valeur);
		} else {
			racine->droite = inserer(racine->droite, valeur);
		}
	}
	return racine;
}
//Prefixe, Infixe, Suffixe
void afficherInfixe(Noeud* racine){
	if(racine != nullptr) {
		afficherInfixe(racine->gauche);
		cout << "{Valeur=" << racine->valeur << "}" ;
		afficherInfixe(racine->droite);
	}
	cout << endl;
}

Noeud* libererArbre(Noeud* racine){
	if(racine != nullptr){
		libererArbre(racine->gauche);
		libererArbre(racine->droite);
		delete racine;
	}
	racine = nullptr;
	return racine;
}

int main(){
	Noeud* racine = nullptr;
	racine = inserer(racine, 50);
	afficherInfixe(racine);
	racine = inserer(racine, 30);
	afficherInfixe(racine);
	racine = inserer(racine, 70);
	afficherInfixe(racine);
	racine = libererArbre(racine);
	cout << "libere arbre " << racine << endl;
	return 0;
}
Editor is loading...
Leave a Comment