Δεν καταλαβαίνω αυτό το Binary Search Tree (BST) παράδειγμα αλγορίθμου

ψήφοι
2

Στον κώδικα διαγραφή από εδώ .

Δεν καταλαβαίνω το πρώτο απόσπασμα του κώδικα διαγραφής (όπου ο κόμβος δεν έχει δύο παιδιά).

Αν ο κόμβος που διαγράφεται έχει ένα γονέα και το ίδιο το παιδί (δηλαδή ο κόμβος έχει ένα παιδί) πώς αυτό το έργο;

Ο κώδικας είναι απλά διαγραφή του κόμβου και όχι τον καθορισμό δεικτών του γονέα με το τώρα ορφανά παιδί.

Είμαι λείπει κάτι;

Δημοσιεύθηκε 12/04/2011 στις 20:58
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Μπορεί να κάνω λάθος, αλλά ο κώδικας για την αναφορά site φαίνεται ΟΚ. Δεν το έχω δοκιμάσει, όμως.

Αυτό είναι αλήθεια, διότι η λειτουργία διαγραφής παίρνει ένα επιχείρημα το οποίο είναι τύπου BSTNode ** κόμβο. Αυτό ΔΕΝ είναι ένας δείκτης στον κόμβο. Αυτό είναι ένας δείκτης στον κόμβο δείκτη του γονέα με το ίδιο κόμβο . Αυτό θα μπορούσε να είναι λίγο ατημέλητη, αλλά οφείλω να ομολογήσω μετά την πραγματοποίηση τι κάνει ο κώδικας, είναι ένα κομψό τρόπο λύση της. Έτσι, όταν ξαναγράψετε (* κόμβου), δεν είναι ξαναγράφοντας τον κόμβο ίδια , αντί να κάνετε επανεγγραφή γονέα του κόμβου του δείκτη στον κόμβο . Ουσιαστικά ο κώδικας κάνει αυτό που προτείνεται σε μια ελαφρώς διεστραμμένο τρόπο: D. Ελπίζω να καταλάβατε τι εννοούσα και ελπίζω πήρα το σωστό.

Θα πρότεινα επίσης να διαβάσετε επιπλέον για το κόκκινο-μαύρα δέντρα, δεδομένου ότι το άρθρο αυτό δίνει τη διορατικότητα μόνο για να δημιουργήσει το δέντρο, αλλά η περιγραφόμενη δομή δεν έχει ασυμπτωτική όρια για το ύψος του. Αν, π.χ. πιέσετε ταξινομημένη τιμές σε αυτή τη δομή, θα είναι ένα συνδεδεμένο πίνακα αντί για ένα ισορροπημένο δέντρο.


Απαντήθηκε 12/04/2011 στις 21:25
πηγή χρήστη

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