Πώς μπορώ να διαγράψω από ένα δυαδικό δέντρο αναζήτησης σε Lisp

ψήφοι
1

Πώς μπορώ να διαγράψω έναν κόμβο από ένα BST;

Χρειάζομαι έναν αλγόριθμο για να το κάνουμε αυτό στο Σχέδιο Δρ.

Δημοσιεύθηκε 07/12/2010 στις 09:09
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
2

Υποθέτοντας δυαδικό δέντρο αναζήτησης σας χρησιμοποιεί κατ 'ευθείαν προς τα εμπρός μειονεκτήματα κύτταρα με περιεχόμενο μόνο στα φύλλα, και με την προϋπόθεση να εργάζεστε σε μια εργασία για το σπίτι: Μπορείτε να χρησιμοποιήσετε set-car!ή set-cdr!να αλλάξετε το περιεχόμενο ενός κελιού μειονεκτήματα.

Απαντήθηκε 07/12/2010 στις 14:51
πηγή χρήστη

ψήφοι
3

Μπορείτε βασικά πετάξει το BST που έχετε τώρα, και να δημιουργήσει ένα νέο χωρίς το στοιχείο.

Μπορείτε να το κάνετε αυτό αναδρομικά φθίνουσα το δέντρο. Εάν το στοιχείο σας είναι μικρότερη από τη ρίζα δεδομένο, δημιουργήστε ένα BST του οποίου η ρίζα και περισσότερο, από ό, τι κλαδί έχει αντιγραφεί από αυτό που έχετε τώρα, αλλά των οποίων λιγότερο από ό, τι κλαδί είναι το αποτέλεσμα από μια αναδρομική κλήση.

Είναι πολύ παρόμοιο με το πώς μπορείτε να προσθέσετε έναν κόμβο, αλλά όταν φτάσετε σε αυτό που έψαχναν για, συγχώνευση των δύο BSTs κάτω από αυτό και να επιστρέψει το αποτέλεσμα. Υπάρχουν σίγουρα τα υπάρχοντα ερωτήματα σχετικά με το πώς να το κάνουμε αυτό ήδη.

Απαντήθηκε 08/12/2010 στις 03:09
πηγή χρήστη

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