Bonjour
Voilà, je possède un arbre binaire et j'aimerais parcourir celui-ci à l'aide d'une pile.
Voici mon algorithme :
J'aimerais mettre tout ça en ADA mais j'ai quelques petits problèmes
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 Si le noeud est une variable, Si le noeud est un enfant gauche père.eval_gauche <- éval Sinon père.eval_droite <- eval Finsi Dépiler Sinon Si l'éval de l'enfant gauche est infini, on empile (enfant_gauche_courant,infini,infini) Sinon Si l'éval de l'enfant droit est infini on empile (enfant_droit_courant,infini,infini) Sinon Si le noeud est un OU res <- eval_gauche ou eval_droite Sinon... Fin Si Si le noeud est un enfant gauche père.eval_gauche <- res Sinon père.eval_droite <- res Finsi Dépiler FinSi FinSi
Si quelqu'un peut m'aider car mon programme n'utilise pas la pile et je ne pense pas qu'il parcourt celui-ci mais plutôt qu'il l'affiche.
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 procedure Indent(N: in Natural) is begin for I in 1..N loop Put(' '); end loop; end; procedure Affiche(A: in Arbre) is procedure Aux(A: in Arbre; N: in Natural; S: in String) is begin if A/=null then Indent(N); Put(S); Put_Line(Element'Image(A.Val)); Aux(A.Gauche, N+3, "Gauche: "); Aux(A.Droit, N+3, "Droit : "); end if; end; begin Aux(A,0,"Racine: "); end;
Merci d'avance.
Partager