Binary Bäume bilden die Bausteine eines effizienten Such-und Sortieralgorithmen und aus diesem Grund haben breite Anwendung in der Informatik. Wie Pascal hat die Unterstützung für Aufzeichnungen und Zeiger -Typen können Sie elegant umzusetzen binären Bäumen drin. Verwenden Sie Ihre Pascal-Programm als Grundlage eines binären Heapprioritätenschlange oder zu modifizieren , um jede Art von vergleichbaren Daten zu unterstützen. Anleitung
1
Öffnen Sie eine neue Datei in Ihrem Pascal Text-Editor oder IDE
2
Fügen Sie folgende Zeile in der Datei: . Bintree Programm ;
3
Geben Sie den nächsten Abschnitt des Codes in Ihren Editor , um die Grundtypen der binären Baum definieren : TypeBinTree = ^ Node ; Node = rECORDI : integer; L , R : Bintree end;
= nilend ;
5
Fügen Sie den folgenden Quelltext in die eigene Datei, um den Baum für leere zu testen: ; : function MakeTree : beginMakeTree Bintree 4
Kopieren Sie den folgenden in den Editor , um einen leeren Baum konstruieren : Funktion IsEmptyTree (B : Bintree ): Boolean ; beginIsEmptyTree : = (B = nil ) end;
6
Fügen Sie die folgenden Zeilen in Ihrem Skript , ein Kind -Knoten mit dem angegebenen ganzzahligen Wert konstruieren : Funktion MakeNode (I : integer ) : Bintree ; Varres : Bintree ; beginNew (Res) ; Res ^ I: . = I; Res ^ L: . = MakeTree ; Res ^ R : . = MakeTree ; MakeNode : = Res end;
7
Fügen Sie diese Zeilen , um einen Baum aus der gegebenen Wurzelknoten befreien : procedure DeallocateTree (var B : Bintree ); beginif nicht IsEmptyTree (B) dann beginDeallocateTree (B ^ L . ); DeallocateTree (B . ^ R); entsorgen (B); endend ;
8
legen Sie die nächste Code-Abschnitt in die Datei auf den angegebenen Wert in seiner geordneten Lage im binären Baum einzufügen: . Verfahren InsertInTree (I : integer; var B : Bintree ); beginif IsEmptyTree (B) thenB : . . . = MakeNode (I) else if I < B ^ Ich thenInsertInTree (I , B ^ L) elseInsertInTree (I , B ^ R ) end;
9
Fügen Sie den folgenden Quelltext, um einen Baum für einen bestimmten Wert suchen : function FindInTree (S : integer; B : Bintree ): Boolean ; beginif IsEmptyTree (B) thenFindInTree : = Falseelse wenn S < ; B ^ Ich thenFindInTree : . = FindInTree (S, B ^ L . ) else if B ^ I < S thenFindInTree : = FindInTree (S, B ^ R . ) else beginFindInTree : . = Trueendend ;
10
Fügen Sie den nächsten Schritt in die Pascal-Programm , um den Inhalt des Baumes in sortierter Reihenfolge zu sehen : procedure printtree (B : Bintree ); beginif nicht IsEmptyTree (B) dann beginPrintTree ( . B ^ L); writeln ( B ^ . I) ; printtree (B ^ R) endend ;
11
Fügen Sie diese letzten Zeilen zu Ihrer Datei, um das Programm zu beenden Pascal : . . beginend