Pascal -Binären Baum/Rekursion

Neue Frage »

Auf diesen Beitrag antworten »
sammmy28 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 }
 
Auf diesen Beitrag antworten »
Tobias

Benutze doch bitte die Code-Umgebung, wenn du schon Code posten willst.

Die Anzahl der Knoten eines Baumes T mit Wurzel v kann man einfach durch:

[latex]\operatorname{Knotenzahl}(T) = 1 + \operatorname{Knotenzahl}(\text{linker Teilbaum von } v) +\operatorname{Knotenzahl}(\text{rechter Teilbaum von } v) [/latex]

berechnen.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »