Fonction renvoie arbre et supprime plus grand élément
Résolu
Étienne9
Messages postés
1090
Statut
Membre
-
Étienne9 Messages postés 1090 Statut Membre -
Étienne9 Messages postés 1090 Statut Membre -
Bonjour à tous,
J'ai fait un algorithme dmax qui renvoie l'arbre privé de l'élément le plus grand et je voulais savoir si c'était bon.
Merci beaucoup d'avance.
J'ai fait un algorithme dmax qui renvoie l'arbre privé de l'élément le plus grand et je voulais savoir si c'était bon.
Merci beaucoup d'avance.
fonction avec retour Arbre dmax(arbre A) Début si (A est vide) retourner A; sinon si (A.d est vide) retourner A.g; sinon A.d = dmax(A.d); retourner A; fin si fin si Fin
3 réponses
-
-
Bonjour,
Oui c'est un arbre binaire de recherche.
Et ceci, est-ce correct s'il vous plaît ?
fonction avec retour entier max(Arbre A) Début si (A est vide) retourner +infini sinon si (A.d est vide) retourner A.val; sinon retourner max(A.d); fin si fin si Fin fonction avec retour Arbre supprimer(Arbre A, entier x) Début si (A est vide) retourner A; sinon si (A.val == x) si (A.g est vide) retourner A.d; sinon si (A.d est vide) retourner A.g; sinon A.val = max(A.g); A.g = dmax(A.g); retourner A; fin si fin si sinon si (A.val > x) A.d = supprimer(x,A.d); retourner A; sinon A.g = supprimer(x,A.g); retourner A; fin si fin si fin si Fin
-
Je trouve maladroit le choix de +infini comme maximum d'un arbre vide, NaN serait plus approprié.
Sinon je ne suis pas d'accord avec cette partie là :
si (A.val > x) A.d = supprimer(x,A.d); retourner A; sinon A.g = supprimer(x,A.g); retourner A; fin si
C'est l'inverse :si (x > A.val) A.d = supprimer(x,A.d); retourner A; sinon A.g = supprimer(x,A.g); retourner A; fin si
-
-
Merci beaucoup. Par contre pour l'ajout d'un élément dans un AVL pouvez-vous m'aider à faire l'algo s'il vous plaît ?
-
Tu trouveras déjà tout ce qu'il faut sur Wikipedia et autre sites. Depuis 50 ans que cet algorithme existe tu n'es pas le premier à qui on demande de faire ça !
-
Je ne m'en sors pas.
Voici ce que j'ai fait :fonction avec retour Arbre ajouter_avl(entier x, Arbre A) Début si (A est vide) Arbre B = nouvel Arbre; B.val = x; return B; sinon si (x < A.val) A.g = rééquilibrer(ajouter_avl(x,A.g)); return A; sinon A.d = rééquilibrer(ajouter_avl(x,A.d)); return A; fin si fin si Fin fonction avec retour Arbre rééquilibrer(Arbre A) Début
....
-