Académique Documents
Professionnel Documents
Culture Documents
page=Arbres
FORUMS TUTORIELS FAQ BLOGS CHAT NEWSLETTER EMPLOI ÉTUDES DROIT CLUB
DI/DSI Solutions d'entreprise Cloud IA ALM Microsoft Java Dév. Web EDI Programmation SGBD Office Mobiles Systèmes
Programmation Algorithmique 2D-3D-Jeux Assembleur C C++ C# D Go Kotlin Objective C Pascal Perl Python Rust Swift
Qt XML Autres
ACCUEIL ALGO COURS ALGO FAQ ALGO FORUM ALGO EXERCICES ALGO LIVRES ALGO SOURCES ALGO
Tous les exercices Débuter - Algorithmique Exercices Exercices corrigés pour apprendre l'algorithmique
Rechercher
Une sélection des meilleurs exercices, accessibles aux débutants, avec des énoncés clairs et complets suivis de solutions détaillées.
Grâce à l'entraide bénévole, les membres du club répondent à vos questions directement sur le forum et vous aident lors de l'apprentissage du langage.
Commentez
Algorithmes
Exercice
Source
Exercice
Source
Exercice
Source
Exercice
Source
1
2 fonction NombreNoeudsInternes(T : arbre ) renvoie un entier
3
4 si EstVide(T) alors
5 renvoyer 0
6 sinon si EstUneFeuille(T) alors
7 renvoyer 0
8 sinon
9 renvoyer 1 + NombreNoeudsInternes(FilsGauche(T)) +
10 NombreNoeudsInternes(FilsDroit(T));
1 unsigned NbInternalNodes(tree T)
2 {
3 if (IsEmpty(T))
4 return 0;
5 else if(IsLeaf(T))
6 return 0;
7 else
8 return 1 + NbInternalNodes(Left(T)) + NbInternalNodes(Right(T));
9 }
Exercice
Source
Étant donné que nous avons défini un arbre comme étant un pointeur, un arbre vide est donc un pointeur null . La fonction de création d'un arbre vide est donc une
fonction qui nous renvoie la constante null .
Il faut tout d'abord créer un nœud ; ensuite, on place dans les fils gauche et droit les sous-arbres que l'on a passés en paramètre ainsi que la valeur associée au nœud.
Enfin, on renvoie ce nœud. En fait, ce n'est pas tout à fait exact, puisque ce n'est pas un nœud, mais un pointeur sur un nœud qu'il faut renvoyer. Nous utilisons cependant
1
2 tree Create(TElement val, tree ls, tree rs)
3 {
4 tree res;
5
6 res = malloc(sizeof(*res));
7
8 if( res == NULL )
9 {
10 fprintf(stderr,"Impossible d'allouer le noeud");
11 return NULL;
12 }
13
14 res->value = val;
15 res->left = ls;
16 res->right = rs;
Notre fonction renvoie NULL s'il a été impossible d'allouer le nœud. Ceci est un choix arbitraire, vous pouvez très bien effectuer d'autres opérations à la place.
Exercice
Créer un algorithme permettant de détruire complètement un arbre.
Source
Cet algorithme est un simple parcours d'arbre. En effet, lorsque nous devrons traiter la racine, nous appellerons une fonction de suppression de la racine. Pour ce faire,
nous ne supprimerons que des feuilles avant de supprimer la racine, il faut supprimer les sous arbres gauche et droit. On en déduit donc que l'algorithme de suppression
est un parcours d'arbre postfixe.
1
2 procedure supprime( src : arbre )
3
4 si non EstVide(src) alors
5 supprime(FilsGauche(src));
6 supprime(FilsDroit(src));
7 supprimeNoeud(src);
8 fin si
Le pseudo code est donc très simple. De la même manière, on en déduit le code en C :
1
2 void Erase(tree * src)
3 {
4 tree ls = Left(*src);
5 tree rs = Right(*src);
6
7 if( ! IsEmpty(*src) )
8 {
9 Erase( &ls );
10 Erase( &rs );
11
12 free( *src );
13 *src = NULL;
14 }
15 }
Algorithmes
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre
intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même
partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous
encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
Mois Année
Calcul formel en Python : les polynômes d'interpolation de Lagrange vus comme des vecteurs, un billet blog de Denis Hulo
Analyse combinatoire et Python : les combinaisons avec répétition, un billet blog de Denis Hulo
Communauté Algorithmique
Le forum Algorithmes et structures de données
Le forum Traitement d'images
Le forum Traitement du signal
Le forum Intelligence artificielle
Le forum Mathématiques
Connexion
Identifiant
Mot de passe
Je m e connec te !
Nous contacter Participez Hébergement Publicité / Advertising Informations légales Partenaire : Hébergement Web
© 2000-2024 - www.developpez.com