Gewusst wie: implementieren eine binäre Struktur mit Pascal
Binäre Bäume können bilden die Bausteine effiziente Such-und Sortieralgorithmen und aus diesem Grund haben die breite Anwendung in der Informatik. Wie Pascal Datensätze und Zeigertypen unterstützt, können Sie elegant binäre Bäume drin implementieren. Verwenden Sie Ihre Pascal-Programm als Grundlage für eine binäre Heaps Vorrangwarteschlange oder ändern Sie es um jede Art von Vergleichsdaten zu unterstützen.
Anweisungen
1 Öffnen Sie eine neue Pascal-Datei in Ihrem Texteditor oder IDE.
2 Fügen Sie folgende Zeile in die Datei:Program Bintree;
3 Geben Sie im nächsten Abschnitt des Codes in Ihren Editor die Grundtypen für die binäre Struktur zu definieren:Typ
BinTree = ^Node; Node = Record I: integer; L, R: BinTree; end;
4
Kopieren Sie die folgenden in den Editor zum Erstellen einer leeren Struktur:Funktion MakeTree: BinTree;beginnen
MakeTree := nil
Ende;
5 Platzieren Sie den folgenden Quellcode in Ihre Datei um die Struktur für leere zu testen:Funktion IsEmptyTree (B: BinTree): Boolean;beginnen
IsEmptyTree := (B = nil);
Ende;
6 Fügen Sie folgenden Zeilen in Ihr Skript einen untergeordneten Knoten mit dem gegebenen ganzzahligen Wert zu konstruieren:Funktion MakeNode (I: Ganzzahl): BinTree;varRes: BinTree;beginnenNeue (Res);Res ^. Ich: = I;Res ^. L: = MakeTree;Res ^. R: = MakeTree;MakeNode: = Res;Ende;
7 Fügen Sie folgende Zeilen um einen Baum aus dem gegebenen Stammknoten freizugeben:Procedure DeallocateTree (Var B: BinTree);beginnenWenn nicht dann beginnen, IsEmptyTree (B)
DeallocateTree (B^.L); DeallocateTree (B^.R); Dispose (B);
EndeEnde;
8 Legen Sie im nächsten Abschnitt des Codes in Ihre Datei um den angegebenen Wert in seine geordnete Lage im binären Baum einzufügen.:Prozedur InsertInTree (I: Ganzzahl; Var B: BinTree);beginnenWenn IsEmptyTree (B) dann
B := MakeNode (I)
sonst wenn ich < B ^. Ich habe dann
InsertInTree (I, B^.L)
sonst
InsertInTree (I, B^.R)
Ende;
9 Fügen Sie den folgenden Quellcode, um einen Baum für einen bestimmten Wert zu suchen:Funktion FindInTree (S: Ganzzahl; B: BinTree): Boolean;beginnenWenn IsEmptyTree (B) dann
FindInTree := False
sonst wenn S < B ^. Ich habe dann
FindInTree := FindInTree (S, B^.L)
sonst wenn B ^. Ich < S dann
FindInTree := FindInTree (S, B^.R)
sonst beginnen
FindInTree := True
EndeEnde;
10 Fügen Sie der nächsten Prozedur in Ihre Pascal-Programm, den Inhalt der Struktur in sortierter Reihenfolge zu sehen:Prozedur PrintTree (B: BinTree);beginnenWenn nicht dann beginnen, IsEmptyTree (B)
PrintTree (B^.L); writeln (B^.I); PrintTree (B^.R)
EndeEnde;
11 Fügen Sie diese letzten Zeilen in die Datei, das Pascal-Programm zu beenden:beginnenEnde.