binary search tree java implementation code examples
Αυτό το σεμινάριο καλύπτει το Δυαδικό Δέντρο αναζήτησης στην Ιάβα. Θα μάθετε να δημιουργείτε ένα BST, να εισάγετε, να καταργείτε και να αναζητάτε ένα στοιχείο, να διασχίζετε και να εφαρμόζετε ένα BST στην Java:
Ένα δέντρο δυαδικής αναζήτησης (αναφέρεται ως BST παρακάτω) είναι ένας τύπος δυαδικού δέντρου. Μπορεί επίσης να οριστεί ως δυαδικό δέντρο που βασίζεται σε κόμβο. Το BST αναφέρεται επίσης ως «Διαταγμένο Δυαδικό Δέντρο». Στο BST, όλοι οι κόμβοι στο αριστερό δευτερεύον δέντρο έχουν τιμές που είναι μικρότερες από την τιμή του ριζικού κόμβου.
Ομοίως, όλοι οι κόμβοι του δεξιού υποδέντρου του BST έχουν τιμές που είναι μεγαλύτερες από την τιμή του ριζικού κόμβου. Αυτή η σειρά των κόμβων πρέπει να ισχύει και για τα αντίστοιχα δευτερεύοντα δέντρα.
=> Επισκεφτείτε εδώ για την αποκλειστική σειρά εκπαιδευτικών εκμάθησης Java.
Τι θα μάθετε:
- Δυαδικό δέντρο αναζήτησης στην Ιάβα
- συμπέρασμα
Δυαδικό δέντρο αναζήτησης στην Ιάβα
Το BST δεν επιτρέπει διπλούς κόμβους.
Το παρακάτω διάγραμμα δείχνει μια αναπαράσταση BST:
Παρακάτω φαίνεται ένα δείγμα BST. Βλέπουμε ότι το 20 είναι ο ριζικός κόμβος αυτού του δέντρου. Το αριστερό δευτερεύον δέντρο έχει όλες τις τιμές κόμβων που είναι μικρότερες από 20. Το δεξιό υπόστρωμα έχει όλους τους κόμβους που είναι μεγαλύτεροι από 20. Μπορούμε να πούμε ότι το παραπάνω δέντρο πληροί τις ιδιότητες BST.
Η δομή δεδομένων BST θεωρείται πολύ αποτελεσματική σε σύγκριση με τη λίστα Arrays και Linked όταν πρόκειται για εισαγωγή / διαγραφή και αναζήτηση αντικειμένων.
Το BST διαρκεί O (log n) χρόνο για να αναζητήσει ένα στοιχείο. Καθώς τα στοιχεία ταξινομούνται, το μισό υπόφυτο απορρίπτεται σε κάθε βήμα κατά την αναζήτηση ενός στοιχείου. Αυτό γίνεται εφικτό επειδή μπορούμε εύκολα να προσδιορίσουμε την τραχιά θέση του στοιχείου που θα αναζητηθεί.
Ομοίως, οι ενέργειες εισαγωγής και διαγραφής είναι πιο αποτελεσματικές στο BST. Όταν θέλουμε να εισαγάγουμε ένα νέο στοιχείο, ξέρουμε κατά προσέγγιση σε ποιο υπόστρωμα (αριστερά ή δεξιά) θα εισάγουμε το στοιχείο.
Δημιουργία δέντρου δυαδικής αναζήτησης (BST)
Δεδομένης μιας σειράς στοιχείων, πρέπει να κατασκευάσουμε ένα BST.
Ας το κάνουμε όπως φαίνεται παρακάτω:
Δεδομένος πίνακας: 45, 10, 7, 90, 12, 50, 13, 39, 57
Ας θεωρήσουμε πρώτα το κορυφαίο στοιχείο, δηλαδή το 45 ως τον ριζικό κόμβο. Από εδώ θα συνεχίσουμε να δημιουργούμε το BST λαμβάνοντας υπόψη τις ιδιότητες που έχουν ήδη συζητηθεί.
Για να δημιουργήσουμε ένα δέντρο, θα συγκρίνουμε κάθε στοιχείο του πίνακα με τη ρίζα. Στη συνέχεια, θα τοποθετήσουμε το στοιχείο σε κατάλληλη θέση στο δέντρο.
Ολόκληρη η διαδικασία δημιουργίας για BST φαίνεται παρακάτω.

Δυαδικές λειτουργίες αναζήτησης δέντρων
Το BST υποστηρίζει διάφορες λειτουργίες. Ο παρακάτω πίνακας δείχνει τις μεθόδους που υποστηρίζονται από το BST στην Java. Θα συζητήσουμε κάθε μία από αυτές τις μεθόδους ξεχωριστά.
Μέθοδος / λειτουργία | Περιγραφή |
---|---|
Εισάγετε | Προσθέστε ένα στοιχείο στο BST μη παραβιάζοντας τις ιδιότητες BST. |
Διαγράφω | Αφαιρέστε έναν δεδομένο κόμβο από το BST. Ο κόμβος μπορεί να είναι ο κόμβος ρίζας, ο μη κόμβος ή ο κόμβος φύλλων. |
Αναζήτηση | Αναζητήστε τη θέση του δεδομένου στοιχείου στο BST. Αυτή η λειτουργία ελέγχει εάν το δέντρο περιέχει το καθορισμένο κλειδί. |
Εισαγωγή στοιχείου στο BST
Ένα στοιχείο εισάγεται πάντα ως κόμβος φύλλων στο BST.
Παρακάτω δίνονται τα βήματα για την εισαγωγή ενός στοιχείου.
- Ξεκινήστε από τη ρίζα.
- Συγκρίνετε το στοιχείο που θα εισαχθεί με τον ριζικό κόμβο. Εάν είναι μικρότερη από τη ρίζα, διασχίστε το αριστερό υποδένδρο ή διασχίστε το δεξί υποδένδρο.
- Διασχίστε το υποδένδρο μέχρι το τέλος του επιθυμητού υποδέντρου. Εισαγάγετε τον κόμβο στο κατάλληλο δευτερεύον δέντρο ως φύλλο κόμβου.
Ας δούμε μια εικόνα της λειτουργίας εισαγωγής του BST.
Εξετάστε το ακόλουθο BST και ας εισάγουμε το στοιχείο 2 στο δέντρο.


Η λειτουργία εισαγωγής για BST φαίνεται παραπάνω. Στο σχήμα (1), δείχνουμε τη διαδρομή που διασχίζουμε για να εισάγουμε το στοιχείο 2 στο BST. Έχουμε δείξει επίσης τις συνθήκες που ελέγχονται σε κάθε κόμβο. Ως αποτέλεσμα της αναδρομικής σύγκρισης, το στοιχείο 2 εισάγεται ως το σωστό παιδί του 1 όπως φαίνεται στο σχήμα (2).
Λειτουργία αναζήτησης στο BST
Για να αναζητήσετε εάν υπάρχει ένα στοιχείο στο BST, ξεκινάμε ξανά από τη ρίζα και μετά διασχίζουμε το αριστερό ή το δεξί υπόστρωμα ανάλογα με το αν το στοιχείο που θα αναζητηθεί είναι μικρότερο ή μεγαλύτερο από τη ρίζα.
Παρατίθενται παρακάτω τα βήματα που πρέπει να ακολουθήσουμε.
- Συγκρίνετε το στοιχείο προς αναζήτηση με τον ριζικό κόμβο.
- Εάν το κλειδί (στοιχείο προς αναζήτηση) = root, επιστρέψτε τον ριζικό κόμβο.
- Διαφορετικά, εάν το κλειδί
- Αλλιώς διασχίζει το δεξιό υπόγειο.
- Συγκρίνετε επαναλαμβανόμενα στοιχεία υποδένδρου έως ότου βρεθεί το κλειδί ή φτάσετε στο τέλος του δέντρου.
Ας παρουσιάσουμε τη λειτουργία αναζήτησης με ένα παράδειγμα. Σκεφτείτε ότι πρέπει να αναζητήσετε το κλειδί = 12.
Στο παρακάτω σχήμα, θα εντοπίσουμε τη διαδρομή που ακολουθούμε για να αναζητήσουμε αυτό το στοιχείο.
Όπως φαίνεται στο παραπάνω σχήμα, συγκρίνουμε πρώτα το κλειδί με τη ρίζα. Δεδομένου ότι το κλειδί είναι μεγαλύτερο, διασχίζουμε το σωστό υποδένδρο. Στο δεξιό υποδένδρο, συγκρίνουμε ξανά το κλειδί με τον πρώτο κόμβο στο δεξιό υποδένδρο.
Διαπιστώνουμε ότι το κλειδί είναι μικρότερο από 15. Επομένως, μεταβαίνουμε στο αριστερό υπόστρωμα του κόμβου 15. Ο άμεσος αριστερός κόμβος του 15 είναι 12 που ταιριάζει με το κλειδί. Σε αυτό το σημείο, σταματάμε την αναζήτηση και επιστρέφουμε το αποτέλεσμα.
Κατάργηση στοιχείου από το BST
Όταν διαγράφουμε έναν κόμβο από το BST, τότε υπάρχουν τρεις δυνατότητες όπως συζητείται παρακάτω:
Ο κόμβος είναι ένας κόμβος φύλλων
Εάν ένας κόμβος που πρόκειται να διαγραφεί είναι ένας κόμβος φύλλων, τότε μπορούμε να διαγράψουμε άμεσα αυτόν τον κόμβο καθώς δεν έχει θυγατρικούς κόμβους. Αυτό φαίνεται στην παρακάτω εικόνα.
Όπως φαίνεται παραπάνω, ο κόμβος 12 είναι ένας κόμβος φύλλων και μπορεί να διαγραφεί αμέσως.
Ο κόμβος έχει μόνο ένα παιδί
Όταν πρέπει να διαγράψουμε τον κόμβο που έχει ένα θυγατρικό, τότε αντιγράφουμε την τιμή του παιδιού στον κόμβο και μετά διαγράφουμε το παιδί.
Στο παραπάνω διάγραμμα, θέλουμε να διαγράψουμε τον κόμβο 90 που έχει ένα θυγατρικό 50. Έτσι, αλλάξαμε την τιμή 50 με 90 και μετά διαγράψαμε τον κόμβο 90 που είναι θυγατρικός κόμβος τώρα.
Ο κόμβος έχει δύο παιδιά
Όταν ένας κόμβος που πρόκειται να διαγραφεί έχει δύο θυγατρικά, τότε αντικαθιστούμε τον κόμβο με τον διάδοχο (αριστερή ρίζα-δεξιά) του κόμβου ή απλώς λέγαμε τον ελάχιστο κόμβο στο δεξί υποδένδρο, εάν το δεξί υποδένδρο του κόμβου δεν είναι κενό. Αντικαθιστούμε τον κόμβο με αυτόν τον ελάχιστο κόμβο και διαγράφουμε τον κόμβο.
Στο παραπάνω διάγραμμα, θέλουμε να διαγράψουμε τον κόμβο 45 που είναι ο ριζικός κόμβος του BST. Διαπιστώνουμε ότι το σωστό υποδένδρο αυτού του κόμβου δεν είναι κενό. Στη συνέχεια, διασχίζουμε το σωστό υποδένδρο και διαπιστώνουμε ότι ο κόμβος 50 είναι ο ελάχιστος κόμβος εδώ. Έτσι αντικαθιστούμε αυτήν την τιμή στη θέση 45 και μετά διαγράφουμε 45.
Εάν ελέγξουμε το δέντρο, βλέπουμε ότι πληροί τις ιδιότητες ενός BST. Έτσι, η αντικατάσταση κόμβου ήταν σωστή.
Εφαρμογή δυαδικού δέντρου αναζήτησης (BST) σε Java
Το ακόλουθο πρόγραμμα στην Java παρέχει μια επίδειξη όλων των παραπάνω λειτουργιών BST χρησιμοποιώντας το ίδιο δέντρο που χρησιμοποιείται στην εικόνα ως παράδειγμα.
γιατί οι ηλιακές ταινίες δεν λειτουργούν
class BST_class { //node class that defines BST node class Node { int key; Node left, right; public Node(int data){ key = data; left = right = null; } } // BST root node Node root; // Constructor for BST =>initial empty tree BST_class(){ root = null; } //delete a node from BST void deleteKey(int key) { root = delete_Recursive(root, key); } //recursive delete function Node delete_Recursive(Node root, int key) { //tree is empty if (root == null) return root; //traverse the tree if (key root.key) //traverse right subtree root.right = delete_Recursive(root.right, key); else { // node contains only one child if (root.left == null) return root.right; else if (root.right == null) return root.left; // node has two children; //get inorder successor (min value in the right subtree) root.key = minValue(root.right); // Delete the inorder successor root.right = delete_Recursive(root.right, root.key); } return root; } int minValue(Node root) { //initially minval = root int minval = root.key; //find minval while (root.left != null) { minval = root.left.key; root = root.left; } return minval; } // insert a node in BST void insert(int key) { root = insert_Recursive(root, key); } //recursive insert function Node insert_Recursive(Node root, int key) { //tree is empty if (root == null) { root = new Node(key); return root; } //traverse the tree if (key root.key) //insert in the right subtree root.right = insert_Recursive(root.right, key); // return pointer return root; } // method for inorder traversal of BST void inorder() { inorder_Recursive(root); } // recursively traverse the BST void inorder_Recursive(Node root) { if (root != null) { inorder_Recursive(root.left); System.out.print(root.key + ' '); inorder_Recursive(root.right); } } boolean search(int key) { root = search_Recursive(root, key); if (root!= null) return true; else return false; } //recursive insert function Node search_Recursive(Node root, int key) // Base Cases: root is null or key is present at root if (root==null } class Main{ public static void main(String() args) { //create a BST object BST_class bst = new BST_class(); /* BST tree example 45 / 10 90 / / 7 12 50 */ //insert data into BST bst.insert(45); bst.insert(10); bst.insert(7); bst.insert(12); bst.insert(90); bst.insert(50); //print the BST System.out.println('The BST Created with input data(Left-root-right):'); bst.inorder(); //delete leaf node System.out.println('
The BST after Delete 12(leaf node):'); bst.deleteKey(12); bst.inorder(); //delete the node with one child System.out.println('
The BST after Delete 90 (node with 1 child):'); bst.deleteKey(90); bst.inorder(); //delete node with two children System.out.println('
The BST after Delete 45 (Node with two children):'); bst.deleteKey(45); bst.inorder(); //search a key in the BST boolean ret_val = bst.search (50); System.out.println('
Key 50 found in BST:' + ret_val ); ret_val = bst.search (12); System.out.println('
Key 12 found in BST:' + ret_val ); } }
Παραγωγή:
Διαδρομή δυαδικού δέντρου αναζήτησης (BST) στην Ιάβα
Ένα δέντρο είναι μια ιεραρχική δομή, επομένως δεν μπορούμε να το διασχίσουμε γραμμικά όπως άλλες δομές δεδομένων, όπως πίνακες. Οποιοσδήποτε τύπος δέντρου πρέπει να διασχίζεται με έναν ειδικό τρόπο, ώστε όλα τα υποδέντρα και οι κόμβοι του να επισκέπτονται τουλάχιστον μία φορά.
Ανάλογα με τη σειρά με την οποία διασχίζεται ο ριζικός κόμβος, το αριστερό υποδένδρο και το δεξιό υπόφυτο σε ένα δέντρο, υπάρχουν ορισμένες διασταυρώσεις όπως φαίνεται παρακάτω:
- Διαδρομή εντός παραγγελίας
- Προπαραγγελία διέλευσης
- Διαδρομή μετά την παραγγελία
Όλες οι παραπάνω διαβάσεις χρησιμοποιούν τεχνική πρώτου βάθους, δηλαδή το δέντρο διασχίζεται βάθος.
Τα δέντρα χρησιμοποιούν επίσης την πρώτη τεχνική για διασταύρωση. Η προσέγγιση που χρησιμοποιεί αυτήν την τεχνική ονομάζεται «Επίπεδο παραγγελίας» εγκάρσια.
Σε αυτήν την ενότητα, θα δείξουμε καθεμία από τις διαβάσεις χρησιμοποιώντας το παράδειγμα BST.
Με το BST όπως φαίνεται στο παραπάνω διάγραμμα, η διαβάθμιση της στάθμης για το παραπάνω δέντρο είναι:
Επίπεδο παραγγελίας επιπέδου: 10 6 12 4 8
Διαδρομή εντός παραγγελίας
Η ενδοπεριφερειακή προσέγγιση διέσχισε το BST με τη σειρά, Αριστερό υποδένδρο => RootNode => Δεξιό υπόφυτο . Η εγκάρσια διέλευση παρέχει μια φθίνουσα ακολουθία κόμβων ενός BST.
Ο αλγόριθμος InOrder (bstTree) για το InOrder Traversal δίνεται παρακάτω.
- Διασχίστε το αριστερό υποδένδρο χρησιμοποιώντας το InOrder (left_subtree)
- Επισκεφτείτε τον ριζικό κόμβο.
- Διασχίστε το σωστό υποδένδρο χρησιμοποιώντας το InOrder (right_subtree)
Η εγκάρσια διασταύρωση του παραπάνω δέντρου είναι:
4 6 8 10 12
Όπως φαίνεται, η ακολουθία των κόμβων ως αποτέλεσμα της εγκάρσιας διέλευσης είναι σε φθίνουσα σειρά.
Προπαραγγελία διέλευσης
Στην προπαραγγελία διέλευσης, η ρίζα επισκέπτεται πρώτα ακολουθούμενη από το αριστερό υποδένδρο και το δεξί υποδένδρο. Το Preorder traversal δημιουργεί ένα αντίγραφο του δέντρου. Μπορεί επίσης να χρησιμοποιηθεί σε δέντρα έκφρασης για τη λήψη έκφρασης προθέματος.
Ο αλγόριθμος για την διέλευση PreOrder (bst_tree) δίνεται παρακάτω:
- Επισκεφτείτε τον ριζικό κόμβο
- Διασχίστε το αριστερό υποδένδρο με το PreOrder (left_subtree).
- Διασχίστε το σωστό υποδένδρο με το PreOrder (right_subtree).
Η προπαραγγελία διέλευσης για το BST που δίνεται παραπάνω είναι:
10 6 4 8 12
Διαδρομή μετά την παραγγελία
Το postOrder διασχίζει το BST με τη σειρά: Αριστερό υποδένδρο-> Δεξιό δευτερεύον δέντρο-> Κόμβος ρίζας . Το PostOrder traversal χρησιμοποιείται για τη διαγραφή του δέντρου ή τη λήψη της έκφρασης μετά την επιδιόρθωση σε περίπτωση δέντρων έκφρασης.
Ο αλγόριθμος για μετάβαση μετά την εντολή (bst_tree) έχει ως εξής:
- Διασχίστε το αριστερό υποδένδρο με postOrder (left_subtree).
- Διασχίστε το σωστό υποδένδρο με postOrder (right_subtree).
- Επισκεφτείτε τον ριζικό κόμβο
Η μετάβαση postOrder για το παραπάνω παράδειγμα BST είναι:
4 8 6 12 10
Στη συνέχεια, θα εφαρμόσουμε αυτές τις διαβάσεις χρησιμοποιώντας την τεχνική βάθους-πρώτη σε μια εφαρμογή Java.
//define node of the BST class Node { int key; Node left, right; public Node(int data){ key = data; left = right = null; } } //BST class class BST_class { // BST root node Node root; BST_class(){ root = null; } //PostOrder Traversal - Left:Right:rootNode (LRn) void postOrder(Node node) { if (node == null) return; // first traverse left subtree recursively postOrder(node.left); // then traverse right subtree recursively postOrder(node.right); // now process root node System.out.print(node.key + ' '); } // InOrder Traversal - Left:rootNode:Right (LnR) void inOrder(Node node) { if (node == null) return; //first traverse left subtree recursively inOrder(node.left); //then go for root node System.out.print(node.key + ' '); //next traverse right subtree recursively inOrder(node.right); } //PreOrder Traversal - rootNode:Left:Right (nLR) void preOrder(Node node) { if (node == null) return; //first print root node first System.out.print(node.key + ' '); // then traverse left subtree recursively preOrder(node.left); // next traverse right subtree recursively preOrder(node.right); } // Wrappers for recursive functions void postOrder_traversal() { postOrder(root); } void inOrder_traversal() { inOrder(root); } void preOrder_traversal() { preOrder(root); } } class Main{ public static void main(String() args) { //construct a BST BST_class tree = new BST_class(); /* 45 // \ 10 90 // \ 7 12 */ tree.root = new Node(45); tree.root.left = new Node(10); tree.root.right = new Node(90); tree.root.left.left = new Node(7); tree.root.left.right = new Node(12); //PreOrder Traversal System.out.println('BST => PreOrder Traversal:'); tree.preOrder_traversal(); //InOrder Traversal System.out.println('
BST => InOrder Traversal:'); tree.inOrder_traversal(); //PostOrder Traversal System.out.println('
BST => PostOrder Traversal:'); tree.postOrder_traversal(); } }
Παραγωγή:
Συχνές Ερωτήσεις
Ε # 1) Γιατί χρειαζόμαστε ένα Δυαδικό Δέντρο Αναζήτησης;
Απάντηση : Ο τρόπος με τον οποίο αναζητούμε στοιχεία στη δομή γραμμικών δεδομένων, όπως πίνακες που χρησιμοποιούν τεχνική δυαδικής αναζήτησης, με το δέντρο να είναι ιεραρχική δομή, χρειαζόμαστε μια δομή που μπορεί να χρησιμοποιηθεί για τον εντοπισμό στοιχείων σε ένα δέντρο.
Εδώ έρχεται το δέντρο δυαδικής αναζήτησης που μας βοηθά στην αποτελεσματική αναζήτηση στοιχείων στην εικόνα.
Q # 2) Ποιες είναι οι ιδιότητες ενός δέντρου δυαδικής αναζήτησης;
Απάντηση : Ένα δυαδικό δέντρο αναζήτησης που ανήκει στην κατηγορία δυαδικού δέντρου έχει τις ακόλουθες ιδιότητες:
- Τα δεδομένα που αποθηκεύονται σε ένα δέντρο δυαδικής αναζήτησης είναι μοναδικά. Δεν επιτρέπει διπλές τιμές.
- Οι κόμβοι του αριστερού υποδέντρου είναι μικρότεροι από τον ριζικό κόμβο.
- Οι κόμβοι του δεξιού υποδέντρου είναι μεγαλύτεροι από τον ριζικό κόμβο.
Q # 3) Ποιες είναι οι εφαρμογές ενός δέντρου δυαδικής αναζήτησης;
Απάντηση : Μπορούμε να χρησιμοποιήσουμε δυαδικά δέντρα αναζήτησης για να λύσουμε μερικές συνεχείς λειτουργίες στα μαθηματικά. Η αναζήτηση δεδομένων σε ιεραρχικές δομές γίνεται πιο αποτελεσματική με το Binary Search Trees. Με κάθε βήμα, μειώνουμε την αναζήτηση κατά μισό υπόφυτο.
Q # 4) Ποια είναι η διαφορά μεταξύ ενός δυαδικού δέντρου και ενός δέντρου δυαδικής αναζήτησης;
Απάντηση: Ένα δυαδικό δέντρο είναι μια ιεραρχική δομή δέντρου στην οποία κάθε κόμβος γνωστός ως γονέας μπορεί να έχει το πολύ δύο παιδιά. Ένα δέντρο δυαδικής αναζήτησης πληροί όλες τις ιδιότητες του δυαδικού δέντρου και έχει επίσης τις μοναδικές του ιδιότητες.
Σε ένα δέντρο δυαδικής αναζήτησης, τα αριστερά δευτερεύοντα δέντρα περιέχουν κόμβους που είναι μικρότεροι ή ίσοι με τον ριζικό κόμβο και το δεξιό υποδένδρο έχει κόμβους που είναι μεγαλύτεροι από τον ριζικό κόμβο.
Ε # 5) Είναι το Δυαδικό Δέντρο Αναζήτησης Μοναδικό;
Απάντηση : Ένα δέντρο δυαδικής αναζήτησης ανήκει σε μια κατηγορία δυαδικών δέντρων. Είναι μοναδικό με την έννοια ότι δεν επιτρέπει διπλές τιμές και επίσης όλα τα στοιχεία του ταξινομούνται σύμφωνα με συγκεκριμένη σειρά.
συμπέρασμα
Τα δέντρα δυαδικής αναζήτησης αποτελούν μέρος της δυαδικής κατηγορίας δέντρων και χρησιμοποιούνται κυρίως για την αναζήτηση ιεραρχικών δεδομένων. Χρησιμοποιείται επίσης για την επίλυση ορισμένων μαθηματικών προβλημάτων.
Σε αυτό το σεμινάριο, έχουμε δει την εφαρμογή ενός δέντρου δυαδικής αναζήτησης. Έχουμε επίσης δει διάφορες λειτουργίες που εκτελούνται στο BST με την εικόνα τους και επίσης εξερευνήσαμε τις διαβάσεις για το BST.
=> Παρακολουθήστε εδώ την απλή εκπαίδευση Java.
Συνιστώμενη ανάγνωση
- Δυαδική αναζήτηση Δέντρο C ++: Εφαρμογή BST και λειτουργίες με παραδείγματα
- Binary Search Algorithm In Java - Εφαρμογή & παραδείγματα
- Δομή Δυαδικών Δέντρων Στο C ++
- Δέντρα σε C ++: Βασική ορολογία, τεχνικές διέλευσης και τύποι δέντρων C ++
- TreeMap In Java - Tutorial with Java TreeMap Παραδείγματα
- TreeSet In Java: Εκμάθηση με παραδείγματα προγραμματισμού
- Εκπαιδευτικό πρόγραμμα JAVA για αρχάριους: 100+ πρακτικά εκπαιδευτικά βίντεο Java
- Συνδεδεμένη λίστα στην εφαρμογή Java - Συνδεδεμένη λίστα & παραδείγματα Java