Ανάπτυξη τον αλγόριθμο διαγραφής σε ένα δυαδικό δέντρο τάξη . Εάν ένας προγραμματιστής αναπτύσσει ένα δυαδικό δέντρο , μπορούμε να δημιουργήσουμε έναν αλγόριθμο διαγραφής για να διαγράψετε όλα τα δεδομένα σε όλους τους κόμβους του παρόντος . Το περίγραμμα για ένα δυαδικό δέντρο κατηγορία που περιλαμβάνει μια λειτουργία διαγραφής θα μοιάζει με αυτό το παράδειγμα :
τάξη BinaryTree {
ιδιωτικό αριστερά κόμβου ? Ιδιωτικό δικαίωμα του κόμβου ?
Public void add () { //add item }
δημόσιας αναζήτησης του κόμβου (στοιχείο int ) { //εμφάνιση για το στοιχείο }
δημόσια κόμβου getRoot ( ) { //root επιστροφής κόμβο }
public void clearList ( Κόμβος x ) { //διαγράφει δέντρο } } 2
Ανάπτυξη τον αλγόριθμο διαγραφής . Αν το " clearList ( ) " αντιπροσωπεύει τη λειτουργία που θα διαγράψετε ένα δυαδικό δέντρο , τότε η συνάρτηση πρέπει να πάει σε κάθε κόμβο και να κηρύξει ως « άκυρη » αναφορά , που σημαίνει Java ξεσκαρτάρισμα μπορεί να το διαγράψει . Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να επιτύχετε αυτό χρησιμοποιώντας μια διάσχιση μετά την παραγγελία , η οποία επισκέπτεται αναδρομικά κάθε κόμβο , και διαγράφει τα δύο υπο - δέντρα αυτού του κόμβου πριν από τη διαγραφή του κόμβου :
clearList public void ( Κόμβος x ) {
if ( x == null) { επιστροφή ? }
clearList ( x.left ) ? clearList ( x.right ) ? x = null?
επιστροφή?}
Η 3
Καλέστε τη λειτουργία διαγραφής . Για να αδειάσετε ένα ολόκληρο δυαδικό δέντρο , ο προγραμματιστής θα μπορούσε να καλέσει τη λειτουργία χρησιμοποιώντας το ριζικό κόμβο του δέντρου . Επίσης , ο προγραμματιστής θα μπορούσε να διαγράψει συγκεκριμένη υπο δέντρα από το δέντρο, να πάρει ένα συγκεκριμένο κόμβο στο δέντρο . Υποθέτοντας " BT " αντιπροσωπεύει ένα δυαδικό δέντρο , το ακόλουθο παράδειγμα δείχνει τον τρόπο για να επιτευχθεί αυτό :
BT.clearList ( BT.search ( 5 ) ) ? //Διαγράφει μια υπο δέντρο κάτω από το κόμβο που αντιπροσωπεύει " 5 " ? BT.clearList ( BT.getRoot ( ) ) ? //διαγραφή ολόκληρου του δέντρου
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα