Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Delphi / Kylix / Turbo Pascal » Pascal-Aufgabe: Binärbaum + Knoteninhalte

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.11.2009, 14:21 Uhr
~BraffA
Gast


hallo,

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:


Zitat:
Gegeben sei ein Binärbaum mit den üblichen Typdefinitionen:



Code:
  type
  tRefBinBaum = ^tBinBaum;
  tBinBaum = record
               info : integer;
               links,
               rechts : tRefBinBaum
             end;


Die Prozedur SymAusgabe soll die Knoteninhalte in der symmetrischen Reihenfolge (inorder) ausgegeben. (Hinweis: der Begriff symmetrische Reihenfolge wird im Skript erklärt.)

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:

Code:
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}


--> B:

Code:
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}


--> C:

Code:
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}


--> D:

Code:
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}


--> E:

Code:
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}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.11.2009, 14:22 Uhr
~BraffA
Gast


Achja, hier noch das Bild zu dem Binärbaum, gehört zwischen "Beispiel: Für den binären Baum" und "sind die Knotenwerte in der symmetrischen Reihenfolge: 1, 3, 4, 6, 8." rein.

Bild --> http://img5.imagebanana.com/view/g1ge24mi/binrbaum.jpg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
30.11.2009, 12:35 Uhr
Bruder Leif
dances with systems
(Operator)


Auf den ersten Blick sieht das gut aus. Fuer B) sollte aber in Real-World-Code der Programmierer geschlagen werden
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
30.11.2009, 16:57 Uhr
0xdeadbeef
Gott
(Operator)


Für E auch. Doppelt hält besser, was?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Delphi / Kylix / Turbo Pascal ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: