Un albero binario di ricerca è una struttura di dati in cui i record di dati , chiamati "nodi ", hanno puntatori ad altri nodi , chiamati " bambini". Questo dà i nodi , quando disegnò , una forma simile a un albero genealogico . I nodi ricevono il loro posto nella struttura in base al fatto che avrebbero valutare come maggiore o minore di altri nodi . Bambini di sinistra sono sempre meno di loro genitore , i bambini giusti sempre alberi di ricerca more.Binary sono importanti in informatica , perché possono essere entrambi ordinati e ricercati , in media , a O (n log n). Cose che ti serviranno
Compiler
esistente binario di ricerca albero
Show More Istruzioni
1
Creare una funzione di memorizzazione che riceve il nodo principale . Ogni volta che avete a che fare con gli alberi in informatica, l'algoritmo più efficace sarà quasi sempre ricorsiva e memorizzare l'albero in un file non farà eccezione . Ecco un esempio di scheletro della funzione di memorizzazione ricorsiva ( in Java) . Negozio public void ( Nodo n ) throws IOException { ... }
2
dati scrivere sul nodo principale di file. Questo userà "pre -ordine " ( Root , Sinistra Bambino , figlio destro ) per passare attraverso tutti i nodi dell'albero , perché questo metodo di attraversamento renderà più semplice per ricostruire l' albero da l'ordine dei nodi nel file di . La funzione ricorsiva ora assomiglia a questo : negozio public void ( Nodo n) throws IOException { write ( savefile , n) ; } Conservare deve chiamare se stesso con la sinistra Bambino : negozio public void ( Nodo n ) throws IOException { write ( savefile , n ) ; negozio ( n.left );} Conservare dovrebbe chiamarsi con il figlio destro : negozio public void ( nodo n) throws IOException { write ( savefile , n) ; negozio ( n.left ) ; negozio ( n.right ) ; }
3
doppio verificare che la funzione passa la lista di controllo ricorsivo . Per evitare errori di overflow dello stack, controllare sempre che una funzione ricorsiva soddisfa le seguenti condizioni : La funzione ha uno stato di uscita? Sì , finché l'albero non è di profondità infinita , alla fine si raggiungerà un nodo che non ha né un figlio sinistro o destro e verrà exit.Does l' ogni iterazione della funzione avvicinarsi allo stato di uscita? Sì , presumendo che l'albero non è circolare e nessun nodo ha uno dei suoi antenati come funzione child.The passa la lista di controllo .
4
Ricostruire dal file . Quando arriva il momento di caricare l' albero indietro dal file, sarà sufficiente inserire ogni nodo nell'albero come viene caricato dal file utilizzando l'algoritmo di inserimento standard. Questo dovrebbe iniziare alla radice e lavorare la sua strada verso il basso con pre -ordine , mettendo il nuovo nodo nel primo spazio vuoto in cui esso si inserisce . Questo dovrebbe ricostruire l' albero esattamente come è stato originariamente composto in O (n log n) , in media .