bonjour!
voila mon probleme : afficher les elemnts d'un arbre de recherche binaire aprés avoir libérer chaque element en parcours postordre de façon itérative.
svp, je veux savoir comment les afficher ces elements?
merci d'avance.
bonjour!
voila mon probleme : afficher les elemnts d'un arbre de recherche binaire aprés avoir libérer chaque element en parcours postordre de façon itérative.
svp, je veux savoir comment les afficher ces elements?
merci d'avance.
Avec un writeln ?
Honnetement, tu vas avoir du mal à les afficher après les avoir libérer...
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
Si à chaque noeud est attachée une etiquette, tu peux l'afficher avec "writeln" avant de le desalouer. Parce si tu libere la memoire avant, je ne sais pas par quel moyen tu pourras retrouver ce noeud une fois perdu. A moins qu'on ne comprenne pas bien ce que ta pré-occupation.
Pourquoi utiliser l'iteration alors que la recursivité se fait tout naturellement?
Merci d'avoir consacré du temps à mon problème.
Ben c'est un travail demandé par mon professeur. Il a exigé l'itération sinon ça aurait été facile à faire avec la récursivité !
Donc ce que vous suggérez, c'est afficher avant de libérer... et si je n'ai pas d'étiquette, comment je fais ??
Tu as forcément une étiquette... (au moins à ton T-shirt ) Si tu n'en as pas c'est un problème, mais comme les exercices des professeurs sont tous très bien écrits, ton arbre stocke forcément des données. Selon le type de ces données, tu dois pouvoir les afficher soit avec writeln, soit avec une procédure faite en ce sens.
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
cette procédure libère les éléments d'un arbre binaire en inordre
(sachant que Suppression (val): supprime une valeur val donnée dans un arbre binaire
et pere(Q) renvoit le pere d'un noeud d' adresse Q donnée )
mais ça marche pas! si j'enlève suppression(val) elle affiche les éléments en inordre !
ma question est ou dois-je placer la procedure suppression ?
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
31
32
33
34
35
36
37
38
39
40
41
42
43 Procedure liberer_inordre(R:point) ; begin var Q :point; stop: boolean; P:=R; while P<> Nil do begin while fg(p)<> nil do begin P:=fg(p); end; val:=p^.valeur; writeln(val); Suppression(val); if fd(p) <> nil then P:=fd(p) else Stop :=false; Q :=pere(p) while ( not stop ) and (Q<>Nil) do begin if (p=fg(Q)) then begin val:=Q^.valeur; writeln(val); suppression(val); if fd(Q)<> nil then begin stop:= true; p:=fd(Q) else p:= Q; Q:= pere(Q); end else p:=Q; Q:=pere(Q); end; end; end; end; end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager