Come faccio a cancellare da un albero binario di ricerca in Lisp

voti
1

Come posso cancellare un nodo da un BST?

Ho bisogno di un algoritmo per farlo in Dr. Scheme.

È pubblicato 07/12/2010 alle 09:09
fonte dall'utente
In altre lingue...                            


2 risposte

voti
2

Assumendo che l'albero binario di ricerca utilizza le cellule dritto in avanti contro con contenuti solo le foglie, e supponendo che si sta lavorando su un compito a casa: è possibile utilizzare set-car!o set-cdr!per cambiare il contenuto di una cella cons.

Risposto il 07/12/2010 a 14:51
fonte dall'utente

voti
3

Che, fondamentalmente, lancia il BST che hai ora, e creare una nuova sans l'elemento.

È possibile farlo in modo ricorsivo scendendo l'albero. Se il vostro articolo è inferiore il dato principale, creare un BST la cui radice e maggiore di ramo viene copiato da quello che hai ora, ma il cui ramo di meno-che è il risultato di una chiamata ricorsiva.

E 'molto simile a come si aggiunge un nodo, ma quando si arriva a quello che cercavi, unire i due BST sotto di esso e restituire il risultato. Ci sono domande sicuramente esistenti su come farlo già.

Risposto il 08/12/2010 a 03:09
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more