sammmy28
Grünschnabel
Dabei seit: 31.10.2007
Beiträge: 1
|
|
Pascal -Binären Baum/Rekursion |
|
so ich soll die anzahl der Knoten eines binärbaum durch Rekursion(eigener functionsaufruf in der function)herausfinden(function BBKnotenzahl) So ich verstehe diese aufgabe - weiß aber aber nicht wie man die knoten berechnen kann. wer kan mir weiterhelfen bzw. hilfe geben?
----------
program TesteBBKnotenzahl (input, output);
type
tNatZahl = 0..maxint;
tRefBinBaum = ^tBinBaum;
tBinBaum = record
info : integer;
links : tRefBinBaum;
rechts : tRefBinBaum;
end;
var
Wurzel : tRefBinBaum;
Anzahl : integer;
functiofunction BBKnotenzahl (n BBKnotenzahl (
inRefWurzel : tRefBinBaum) : tNatZahl;
{ bestimmt die Anzahl der Knoten des Binaerbaumes,
auf dessen Wurzel inRefWurzel zeigt }
procedure BBKnotenEinfuegen (
inZahl : integer;
var ioWurzel : tRefBinBaum);
{ fuegt in den Suchbaum, auf dessen Wurzel ioWurzel
zeigt, ein Blatt mit Wert inZahl an. }
var
Zeiger : tRefBinBaum;
begin
if ioWurzel = nil then
begin
new (Zeiger);
Zeiger^.Info := inZahl;
Zeiger^.links := nil;
Zeiger^.rechts := nil;
ioWurzel := Zeiger
end { if }
else { ioWurzel <> nil }
if inZahl < ioWurzel^.info then
BBKnotenEinfuegen (inZahl, ioWurzel^.links)
else
BBKnotenEinfuegen (inZahl, ioWurzel^.rechts);
end; { BBKnotenEinfuegen }
procedure BBAufbauen (var outWurzel : tRefBinBaum);
{ Liest eine Folge von Integer-Zahlen ein (0 beendet die
Eingabe, gehoert aber nicht zur Folge) und speichert
die Folge in einem binren Suchbaum. }
var
Zahl : integer;
begin
outWurzel := nil; { mit leerem Baum initialisieren }
read (Zahl);
while Zahl <> 0 do
begin
BBKnotenEinfuegen (Zahl, outWurzel);
read (Zahl)
end
end; { BBAufbauen }
begin
writeln('Bitte integer-Zahlen eingeben (0=Ende):');
BBAufbauen (Wurzel);
{ 2 mal aufrufen wie bei Aufg. 1 }
Anzahl := BBKnotenzahl (Wurzel);
Anzahl := BBKnotenzahl (Wurzel);
writeln ('Der Baum hat ', Anzahl, ' Knoten.');
end. { TesteBBKnotenzahl }
|
|