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;