Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Paskalio medžiai

Parašė untitled· 2010 Kov. 9 18:03:52
#1

Sveiki, gal kas gali padėti su tokia užduotimi?

2. Dvejetainio medžio viršūnę aprašo toks įrašas:
type T = ...;
Medis = ^viršūnė;
viršūnė = record
INFO : T;
K, D : Medis;
end;
Sukurta procedūra medžiui trinti:
procedure Trink(P: Medis);

function ArLapas(P: Medis): boolean;
begin
ArLapas := (P^.K = nil) and (P^.D = nil);
end;

procedure TrinkLapą(var P: Medis);
begin
dispose(P); P := nil;
end;

begin
if (P^.K <> nil)
then
if ArLapas(P^.K) then TrinkLapą(P^.K) else Trink(P^.K);
if (P^.D <> nil)
then
if ArLapas(P^.D) then TrinkLapą(P^.D) else Trink(P^.D);
if ArLapas(P) then TrinkLapą(P);
end;

Tačiau procedūra veikia neteisingai: ištrinami tik lapai ir jų tėvai. Raskite klaidą ir paaiškinkite ją. Ištaisykite procedūrą, kad ji veiktų korektiškai – trintų visą medį.

Ir dar - ką reiškia „^“