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.













