Besoin d'aide sur arbre et récursivité SVP [Résolu]

Signaler
Messages postés
3
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
27 janvier 2005
-
Messages postés
3
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
27 janvier 2005
-
8-) Je débute sur la récursivité, les pointeurs et les arbres.
J'avoue que je trouve ça hard. J'utilise le pas à pas pour bien me représenter ce que cela donne et ainsi essayer de comprendre mais là je bloque.
voici mon code :
***************************************************
type
Pnooeud = ^enreg;
enreg = record
val : integer;
ptab : array of Pnoeud;
end;

var y, z : integer;
***************************************************
procedure Tform1.PRconstruit( var p : Pnoeud; prof : integer);***
var
i : integer;
begin
if prof = 0 then exit; // condition d'arrêt
new (p);
setlength (p^.ptab, 2); // alloue un tableau de 2 (ou+)
if (prof - 1) = 0 then //
begin
inc (y); p^.val := y // 101, 102 etc sont affectés
end
else
begin
inc (z); p^.val := z; // 1, 2, 3 etc sont affecté
end;

for i:= 0 to 1 do
construit ( p^.ptab[i] , prof - 1);
end;
****************************************************

procedure Tform1.PRmodification (var pf : pnoeud); **********
var i : integer;
begin // procédure qui ne fait
if pf = nil then exit; // que lire en postfixe
for i := 0 to high(pf^.ptab) do
modification(pf^.ptab[i]);
end;
**************************************************
procedure Tform1.init;*********************************
begin
y:= 100; z := 0;
new (pn);
PRconstruit (pn, 4);
PRmodification (pn);
end;
**************************************************
l'arbre est bien construit ainsi :
(les valeurs que j'ai indiquées représentent la valeur du noeud;
chaque noeud est composé d'un tableau de 2 pointeurs pointant sur d'autres noeuds)

1

2 5

(c)3 4 6 7

(a)101 (b)102 103 104 105 106 107 108

mon problème (qui doit vous paraître bien simple!):

une fois l'arbre construit (par PRconstruit), je voudrais comparer le noeud (a) et le noeud(b) (et évent. d'autres) et affecter au noeud (c) la plus grande valeur de ses fils, et ainsi de suite.

on aurait ainsi :
(c)102

(a)101 b(102)

ma question:
Que dois ajouter ou modifier à PRmodification pour pouvoir le faire (après bien des essais, rien ne marche.

Aussi je me décide à franchir le pas et à en appeler à votre bon coeur, M'sieurs dames!...

1 réponse

Messages postés
3
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
27 janvier 2005

8-) c'est bon j'ai trouvé