деревья.... помогите, а то вылечу((( (pascal)
Добавлено: 13 янв 2008, 13:44
необходимо описать рекурсивнуу процедуру или функцию, которая вычисляет значение дерева формулы Т...
пока сделал формирование дерева (key:char), в котором листья - "цифры" (char, но перевести в реальные цифры ьруда не составит), а остальные узлы - "знаки"... также сделал вывод дерева на экран в виде дерева... помогите плс, а нето капздец...
пока сделал формирование дерева (key:char), в котором листья - "цифры" (char, но перевести в реальные цифры ьруда не составит), а остальные узлы - "знаки"... также сделал вывод дерева на экран в виде дерева... помогите плс, а нето капздец...
Код: Выделить всё
uses crt;
type ref=^el;
el=record
key:char;
l,r:ref;
end;
var n:integer; root:ref; c,i:char; l,r:ref; key:char;
function tree(n:integer):ref;
var newnode:ref; nl,nr:integer;
begin if n=0 then tree:=nil else begin nl:=n div 2;
nr:=n-nl-1;
if (nl<>0) and (nr<>0) then begin
write('znak:');
readln(c);
end
else begin
write('cifra:');
readln(c);
end;
new(newnode); with newnode^ do begin
key:=c;
l:=tree(nl);
r:=tree(nr);
end; tree:=newnode; end; end;
procedure ptree(t:ref; h:integer);
var i:integer;
begin if t<>nil then with t^ do begin ptree(l,h+1);
for i:=1 to h do write(' ');
writeln(key);
ptree(r,h+1); end;
end;
BEGIN readln(n);
root:=tree(n);
ptree(root,0);
readln
end.