AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fragen zu binären Bäumen in Delphi

Offene Frage von "lennart9319"
Ein Thema von lennart9319 · begonnen am 12. Mai 2012 · letzter Beitrag vom 14. Mai 2012
 
lennart9319

Registriert seit: 12. Mai 2012
2 Beiträge
 
#1

Fragen zu binären Bäumen in Delphi

  Alt 12. Mai 2012, 17:13
Ich habe am kommenden Dienstag meine mündliche Prüfung im Fach Informatik und die beiden Hauptthemen sind Binäre Bäume in Delphi und Automaten und Akzeptoren.
Um mich darauf vorzubereiten habe ich mir ein einfaches Delphiprogramm angeguckt, was wie ein Telefonbuch funktionieren soll (Ist von einem ehemaligen Schüler programmiert worden). Das meiste versteh ich auch, nur an 2 Stellen im Code, weiß ich nicht so ganz sicher, was er genau tut, viellleicht kann mir da einer helfen.
Es geht um die procedure max_in_links und die function baumbau. Was der Code im ganzen bewirkt, ist mir klar, nur eben nicht im einzelnen!

Und dann hab ich noch eine zweite Frage: Wie schreibt man die function inorder zur function postorder um?

(Zur Verständniss ist im Anhang der gesamte Code des Programms)

lennart9319



Delphi-Quellcode:
procedure TForm1.Button_ladenClick(Sender: TObject);
function baumbau(n: integer): pointer;
  var hilf1: pointer;
  begin if n=0 then baumbau:=nil
               else begin new(hilf1);
                          hilf1^.l:=baumbau(n div 2);
                          read(f,x); hilf1^.inside:=x;
                          hilf1^.r:=baumbau(n-1- n div 2);
                          baumbau:=hilf1
                    end
  end;
begin if OpenDialog1.Execute then System.Assign(f,OpenDialog1.FileName);
      if OpenDialog1.FileName<>''
        then begin reset(f);
                   read(f,x);
                   anz:=strtoint(x.nr);
                   root:=baumbau(anz);
             end
end;


procedure TForm1.Button_speichernClick(Sender: TObject);
procedure inorder(p: pointer);
  begin if p<> nil then begin inorder(p^.l);
                              x:=p^.inside;
                              write(f,x);
                              inorder(p^.r)
                        end
Delphi-Quellcode:
procedure TForm1.Button_entfernenClick(Sender: TObject);
  procedure max_in_links(var p,q: pointer);
  begin if p^.r<>nil
          then max_in_links(p^.r,q)
          else begin q^.inside:=p^.inside;
                     p:=p^.l;
               end
  end;
  procedure entfernen(var hilf1: pointer; suchname: string);
  begin if hilf1=nil
          then Edit2.Text:='existiert nicht'
          else if suchname<hilf1^.inside.name
                 then entfernen(hilf1^.l, suchname)
                 else if suchname>hilf1^.inside.name
                        then entfernen(hilf1^.r, suchname)
                        else if hilf1^.l=nil
                                then hilf1:=hilf1^.r
                                else if hilf1^.r=nil
                                       then hilf1:=hilf1^.l
                                       else max_in_links(hilf1^.l,hilf1)
  end;
begin
  entfernen(root, Edit1.text);
  if Edit2.Text<>'existiert nichtthen anz:=anz-1
end;
Angehängte Dateien
Dateityp: txt Baum Code.txt (6,0 KB, 12x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz