Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Binärbaum rekursiv auslesen (https://www.delphipraxis.net/166026-binaerbaum-rekursiv-auslesen.html)

shmia 31. Jan 2012 16:56

AW: Binärbaum rekursiv auslesen
 
Hier noch eine kleine Verbesserung um den Forscherdrang zu befriedigen:
Mit dem Parameter "Level" kann man nachverfolgen, wie tief ein Knoten im Baum steckt.
Beim 1. Aufruf gibt übergibt man den Level mit 0.

Das "Abgrasen" eines Baums nennt man übrigens "Besuchen" oder "Traversieren";
Delphi-Quellcode:
procedure VisitTree(node:PNode; Level:integer); // preorder traversal
Begin
  if node<>nil then
  Begin
    Form1.ListBox1.Items.Add(Format('%s [%d]', [node.name, Level]); // zu Kontrollzwecken in Listbox anzeigen
    VisitTree(node.ChildNode1, Level + 1);
    VisitTree(node.ChildNode2, Level + 1);
  end;
End;
Schau mal was passiert, wenn man die Reihenfolge des Besuchens umstellt:
Delphi-Quellcode:
procedure VisitTree(node:PNode; Level:integer); // inorder traversal
Begin
  if node<>nil then
  Begin
    VisitTree(node.ChildNode1, Level + 1);
    Form1.ListBox1.Items.Add(Format('%s [%d]', [node.name, Level]); // zu Kontrollzwecken in Listbox anzeigen
    VisitTree(node.ChildNode2, Level + 1);
  end;
End;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:05 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz