Bonjour,
Je fais un programme qui utilise des arbres binaire de recherche mais la dernière fonction me pose problème. Elle doit supprimer le noeud ou la feuille recherché(e).
Voici ma struture d'arbre :
Voici la fonction telle qu'elle est en ce moment :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 typedef struct snoeud{ int valeur; struct snoeud *fg; struct snoeud *fd; } noeud; typedef noeud * arbre;
(je l'ai déjà modifiée dans tous les sens mais c'est la version qui me donne les résultats les plus correctes)
Je sais qu'il manque des tests mais je n'arrive pas à les implémenter correctement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 void supprimerElement(arbre *a, int val){ if( (*a)->valeur == val ) { if( (*a)->fg ) { (*a) = (*a)->fg; while( (*a)->fd ) { (*a) = (*a)->fd; } (*a)->fd = (*a)->fd; (*a) = (*a)->fg; } else { (*a) = (*a)->fd; } } else { if( val < (*a)->valeur ) { supprimerElement( &(*a)->fg, val); } else { supprimerElement( &(*a)->fd, val); } } }
Si vous avez un conseil à me donner je suis preneur
Merci d'avance!
A bientôt
Partager