möchte mir zu folgender aufgabe gern noch eine 2te meinung einholen.
Mein lösungsvorschlag:
a: falsch, da der knoten-wert sofort ausgegeben wird
b: flasch, wenn die Wurzel des Baums Null ist
c: richtig
d: es muss zuerst der rechte Teilbaum durchlaufen, bevor der Knotenwert ausgegeben wird
e: richtig
stimmt das so? liege ich richtig?
Hier die Aufgabe:
Gegeben sei ein Binärbaum mit den üblichen Typdefinitionen:
Die Prozedur SymAusgabe soll die Knoteninhalte in der symmetrischen Reihenfolge (inorder) ausgegeben. (Hinweis: der Begriff symmetrische Reihenfolge wird im Skript erklärt.)Code: Alles auswählen
type tRefBinBaum = ^tBinBaum; tBinBaum = record info : integer; links, rechts : tRefBinBaum end;
Beispiel: Für den binären Baum
sind die Knotenwerte in der symmetrischen Reihenfolge: 1, 3, 4, 6, 8.
Welche der fünf folgenden Varianten geben die Knotenwerte für beliebige Binärbäume in der symmetrischen Reihenfolge aus?
--> A:--> B:Code: Alles auswählen
procedure SymAusgabe ( inRefWurzel : tRefBinBaum); {gibt die Knotenwerte eines Binärbaums in symmetrischer Reihenfolge aus} begin if inRefWurzel <> nil then begin write (inRefWurzel^.info); if inRefWurzel^.links <> nil then SymAusgabe(inRefWurzel^.links); if inRefWurzel^.rechts <> nil then SymAusgabe(inRefWurzel^.rechts) end end; {SymAusgabe}
--> C:Code: Alles auswählen
procedure SymAusgabe ( inRefWurzel : tRefBinBaum); {gibt die Knotenwerte eines Binärbaums in symmetrischer Reihenfolge aus} begin if inRefWurzel^.links <> nil then SymAusgabe(inRefWurzel^.links); write(inRefWurzel^.info); if inRefWurzel^.rechts <> nil then SymAusgabe(inRefWurzel^.rechts) end; {SymAusgabe}
--> D:Code: Alles auswählen
procedure SymAusgabe ( inRefWurzel : tRefBinBaum); {gibt die Knotenwerte eines Binärbaums in symmetrischer Reihenfolge aus} begin if inRefWurzel <> nil then begin SymAusgabe(inRefWurzel^.links); write (inRefWurzel^.info); SymAusgabe(inRefWurzel^.rechts) end end; {SymAusgabe}
--> E:Code: Alles auswählen
procedure SymAusgabe ( inRefWurzel : tRefBinBaum); {gibt die Knotenwerte eines Binärbaums in symmetrischer Reihenfolge aus} begin if inRefWurzel <> nil then begin if inRefWurzel^.links <> nil then SymAusgabe(inRefWurzel^.links); if inRefWurzel^.rechts <> nil then SymAusgabe(inRefWurzel^.rechts); write (inRefWurzel^.info) end end; {SymAusgabe}
Code: Alles auswählen
procedure SymAusgabe ( inRefWurzel : tRefBinBaum); {gibt die Knotenwerte eines Binärbaums in symmetrischer Reihenfolge aus} begin if inRefWurzel <> nil then begin if inRefWurzel^.links <> nil then SymAusgabe(inRefWurzel^.links); write (inRefWurzel^.info); if inRefWurzel^.rechts <> nil then SymAusgabe(inRefWurzel^.rechts) end end; {SymAusgabe}