alberi binari possono formare i mattoni di efficienti algoritmi di ricerca e ordinamento e per questo avere ampia applicazione in informatica. Come Pascal ha il supporto per i record ei tipi puntatore , si può elegantemente implementare alberi binari in esso. Usa il tuo programma Pascal come la base di una coda di priorità heap binari o modificarlo per supportare qualsiasi tipo di dati comparabili . Istruzioni
1
Aprire un nuovo file di Pascal in un editor di testo o IDE
2
Aggiungi seguente riga al file : . Programma Bintree ;
3
Tipo prossima sezione di codice in un editor per definire i tipi di base per l'albero binario : TypeBinTree = ^ nodo , nodo = recordi : integer , L , R : Bintree ; fine ;
4
Copia il seguente nell'editor di costruire un albero vuoto : funzione MakeTree : Bintree ; beginMakeTree : = nilend ;
5
Inserire il seguente codice nel file per testare l' albero per il vuoto : funzione IsEmptyTree ( B : Bintree ) : Boolean ; beginIsEmptyTree : = ( B = nil) ; end ;
6
includere le seguenti righe nello script per costruire un nodo figlio con il dato valore intero : funzione MakeNode ( I: integer ) : Bintree ; Varres : Bintree ; beginNew ( Res ), Res ^ I: . = I; Res ^ L : . = MakeTree ; Res ^ R : . = MakeTree ; MakeNode : = Res ; fine ;
7
Aggiungi queste righe per liberare un albero da un dato nodo principale : procedura DeallocateTree (var B : Bintree ) ; beginif non IsEmptyTree ( B ) allora beginDeallocateTree ( B ^ L . ) ; DeallocateTree ( B . ^ R ) ; Dispose ( B); endend ;
8
Posizionare la sezione successiva di codice nel file per inserire il valore dato nella sua posizione ordinate l'albero binario : . procedura InsertInTree (I : integer; var B : Bintree ) ; beginif IsEmptyTree ( B ) thenB : . . . = MakeNode ( I) else if I < B ^ I thenInsertInTree ( I, B ^ L) elseInsertInTree (I , B ^ R ) end ;
9
Aggiungere il seguente codice per cercare un albero per un dato valore : funzione FindInTree ( S : integer ; B : Bintree ) : Boolean ; beginif IsEmptyTree ( B ) thenFindInTree : = Falseelse se S < , B ^ I thenFindInTree : . = FindInTree ( S , B ^ L . ) altrimenti se B ^ I < S thenFindInTree : = FindInTree ( S , B ^ R ). altro beginFindInTree : . = Trueendend ;
10
Incolla la procedura seguente nel vostro programma Pascal per vedere il contenuto del albero in modo ordinato : procedura StampaAlberoPre ( B : Bintree ) ; beginif non IsEmptyTree ( B ) allora beginPrintTree ( . B ^ L) ; writeln ( B ^ . I) ; StampaAlberoPre ( B ^ R) endend ;
11
Aggiungi queste ultime righe al file per completare il programma di Pascal : . . beginend