Δημιουργήστε ένα βασικό δυαδικό δένδρο αναζήτησης τάξη . Σε αυτό το σημείο , θα χρειαστείτε μια βασική μέθοδο κατασκευαστή που προετοιμάζει την αξία του κόμβου και μια μέθοδο ένθετο μόνο . Η μέθοδος ένθετο θα διασχίσει ένα δέντρο και να κάνει ένα νέο κόμβο στο σωστό μέρος . " " δημόσια τάξη BinaryTree { BinaryTree αριστερά? BinaryTree δεξιά? αξία int ? δημόσια BinaryTree ( int v) {value = v ? } //Τοποθετήστε μια τιμή στο δέντρο δημόσιο void insert ( int v) { αν ( κατά περίπτωση ( αριστερά = = null ) αριστερά = νέα BinaryTree ( v) ? άλλο left.insert ( v ) ? } else if ( v > value ) {if (δεξιά == null) δεξιά = νέα BinaryTree ( v) ? άλλο right.insert ( v ) ? } } } " " 2
Δημιουργήστε το παράδειγμα ( κόμβος ) του δυαδικού δέντρου που θα είναι ο ριζικός κόμβος Όπως και κάθε άλλο κόμβο , ο κόμβος πρέπει να έχει μια τιμή είναι συνήθως καλύτερα . . . να επιλέξετε μια τιμή κοντά στο μέσο όρο των αντικειμένων είστε αποθήκευση , ως δυαδικά δένδρα πρέπει να είναι όσο το δυνατόν πιο ισορροπημένη " " BinaryTree β = νέα BinaryTree ( 50 ) ? " "
εικόνων 3 <. . p > Εισαγωγή κόμβων στο δέντρο με συγκεκριμένη σειρά, για να διατηρήσει την ισορροπία , καθώς αυτό δυαδικό δέντρο δεν είναι αυτόματη εξισορρόπηση Αυτό το παράδειγμα δημιουργεί το μικρότερο δυνατό δέντρο , ώστε να διατηρούν την αποτελεσματικότητα " " b.insert ( 20 ) ? b.insert ( 40 ) ? b.insert ( 10 )? b.insert ( 5 )? b.insert ( 45 )? b.insert ( 70 )? b.insert ( 60 )? b.insert ( 80 )? b.insert ( 55 ) ? b.insert ( 85 ) ? " "
Η 4
Μετακίνηση σε ολόκληρη την δέντρο χρησιμοποιώντας μια διάσχιση inorder το αριστερό δέντρο διασχίζεται πρώτος, ακολουθούμενος από τον κόμβο ρίζας , και στη συνέχεια το δεξί δέντρο είναι . διασχίζονται . Χρησιμοποιώντας αναδρομή , ο κωδικός είναι απλώς τρεις γραμμές . Ωστόσο, δεδομένου ότι αναδρομή παίρνει στοίβα χώρο , θα πρέπει να χρησιμοποιείται με προσοχή . Με μια μικρή και ισορροπημένο δυαδικό δέντρο , αναδρομή δεν θα ξεχειλίσει το stack .
5 <. p> Προσθέστε μια νέα μέθοδο για την κατηγορία Java BinaryTree ονομάζεται inorder " " public void inorder ( ) {if ( αριστερά = null ! ) left.inorder ( ) ? System.out.println ( αξία ) ? ! εάν ( δεξιά = null ) right.inorder ( ) ? } " "
Η 6
Καλέστε τη μέθοδο inorder μετά ένθετα σας για να εκτυπώσετε τους κόμβους σε ταξινομημένη σειρά . "" b.inorder ( ) ? "
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα