DrRacket Eliminazione Radice di un Binary Search Albero

voti
1

SI RICORDA CHE QUESTO E 'IL LAVORO! -> Io non sono alla ricerca di esempi di codice dirette, ma piuttosto un po 'di massaggio del mio ragionamento ...

Mi è stato chiesto di scrivere una funzione che elimina la radice di un albero binario di ricerca facendo tre cose: i) ruotando l'albero a destra ii) la rimozione della radice del sottoalbero destro (che era la radice BST originale) iii) ricostruzione la BST con la nuova radice (che era la sinistra dell'albero originale) e le riarrangiamenti appropriati dei figli di quel nodo ... Ecco quello che ho:

    (define (rm-root my-bst)
      (list (key (rot-r my-bst)) 
            (left (rot-r my-bst)) 
            (append (right (right (rot-r my-bst))) 
                    (left (right (rot-r my-bst))))))

Il che è tutto grande, si aspettano per ciò che non ricostruisce l'albero con i figli del nodo che è stato promosso al nodo principale. Qualcuno può aiutarmi a pensare a come devo fare per attuare questo? Devo dire che abbiamo definito Bst di come liste e che la funzione rot-R ruota la BST a destra. Grazie.

È pubblicato 12/11/2011 alle 01:07
fonte dall'utente
In altre lingue...                            


1 risposte

voti
1

Beh, io non sono sicuro che questo sarà utile 12 giorni dopo la questione è stato chiesto, ma qui va.

Per essere chiari, sto cercando di indovinare che la struttura dei dati è della forma (tasto lista sinistra a destra), in cui destra e sinistra sono anche alberi (o vuote, ma questo è irrilevante per questo). Se questo non è il caso, sarebbe necessario un chiarimento di questo.

Un problema nel codice è che non si desidera aggiungere direttamente le due liste che hai insieme per il diritto. Si vuole fare una lista con la chiave di uno di questi, e poi la sinistra e la destra. Se sto leggendo correttamente, la funzione di sinistra dovrebbe restituire un albero e quindi dovrebbe funzionare bene.

Vorrei verificare l'attuazione di rot-r se fossi in te, come che sembra essere la possibilità principale per le cose che vanno male.

Risposto il 23/11/2011 a 07:33
fonte dall'utente

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