Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Java

Πώς να κάνετε Inorder Traversal σε Binary Tree σε Java

Java δεν έχει ένα δυαδικό δέντρο τάξη , αν και είναι απλό να παρουσιάσει μια έκδοση της δομής των δεδομένων για να κάνει μια διάσχιση inorder . Ένα " διάσχιση " ενός δυαδικού δέντρου είναι μια στερεότυπη διαδικασία για την επίσκεψη κάθε κόμβο στο δυαδικό δέντρο μία φορά . Μια διάσχιση inorder θα το κάνει αυτό σε ταξινομημένη σειρά . Διάσχιση εφαρμόζεται συχνά ως ένα είδος iterator ( όπως μια λίστα iterator ) ή με μια μέθοδο που θα καλέσει μια μέθοδο επανάκλησης για κάθε κόμβο . Μπορείτε, όμως , να το κάνετε αυτό χωρίς τη χρήση επιστροφές κλήσης ή επαναλήπτες , αντί να εκτυπώσετε στην κονσόλα κάθε κόμβος επισκέφθηκε . Οδηγίες
Η 1

Δημιουργήστε ένα βασικό δυαδικό δένδρο αναζήτησης τάξη . Σε αυτό το σημείο , θα χρειαστείτε μια βασική μέθοδο κατασκευαστή που προετοιμάζει την αξία του κόμβου και μια μέθοδο ένθετο μόνο . Η μέθοδος ένθετο θα διασχίσει ένα δέντρο και να κάνει ένα νέο κόμβο στο σωστό μέρος . " " δημόσια τάξη 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 ( ) ? "
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα