Παράδειγμα B + -Tree Υποθέτουμε B + -Tree τάξης 3 (α=2, b=3) Κάθε φύλλο θα έχει 2 ως 3 το πολύ στοιχεία Κάθε εσωτερικός κόμβος θα έχει 2 ως 3 το πολύ δείκτες.
ρίζα 5 7 __ __ ● 10 ● _ ● __ 17 Αντικείμενο B + -Tree Εσωτερικός Κόμβος Περιλαμβάνει αναφορές σε όλα τα παιδιά του, ενώ έχει αναφορές με τα μικρότερα κλειδιά τους εκτός από ένα. Φύλλα που περιλαμβάνουν τα στοιχεία σε ταξινομημένη σειρά. Δείκτης που μόλις δημιουργήθηκε και περιλαμβάνει αναφορά σε φύλλο με το μικρότερο κλειδί. Τα αντικείμενα του παραδείγματος
ρίζα=null Ξεκινάμε με ένα άδειο B + -Tree
ρίζα=null 10 Καλούμε την μέθοδο insert() για να εισάγουμε ένα στοιχείο (10).
ρίζα 10 Η ρίζα δέχεται το στοιχείο 10, αντιλαμβάνεται ότι το δέντρο είναι άδειο και κτίζει ένα νέο άδειο φύλλο.
ρίζα Insert: Η ρίζα στέλνει το νέο στοιχείο 10 στο φύλλο.
ρίζα Insert: Το φύλλο αποθηκεύει το στοιχείο.
ρίζα Insert: Σε κάθε νέα εισαγωγή (5) το φύλλο κρατά τα στοιχεία ταξινομημένα. 5
ρίζα Insert: Σε κάθε νέα εισαγωγή (7) το φύλλο κρατά τα στοιχεία ταξινομημένα. 7
ρίζα Insert: Εισαγωγή του 14. Ο αριθμός των στοιχείων στο φύλλο είναι > 3. Το φύλλο πρέπει να διασπαστεί (split) 14
ρίζα Insert: Το πρώτο φύλλο δημιουργεί νέο φύλλο και μετακινεί τα μεγαλύτερα στοιχεία (10,14) στο νέο
ρίζα Insert: Το πρώτο φύλλο επιστρέφει τον δείκτη του νέου φύλλου με το μικρότερο στοιχείο (10) στον πατέρα του (στη ρίζα)
ρίζα Insert: Η ρίζα παραλαμβάνει τον δείκτη και τον χρησιμοποιεί για να κατασκευάσει έναν νέο εσωτερικό κόμβο που έχει παιδιά τα δύο φύλλα ● 10 ● _ ●
ρίζα 5757 Η εισαγωγή του 14 ολοκληρώθηκε ● 10 ● _ ●
ρίζα Insert: Εισαγωγή του 24. Η ρίζα το στέλνει στον εσωτερικό κόμβο. ● 10 ● _ ●
ρίζα Insert: Ο εσωτερικός κόμβος καθορίζει σε ποιο από τα παιδιά θα στείλει το στοιχείο.
ρίζα Insert: Το δεξί φύλλο το παραλαμβάνει και το αποθηκεύει. ● 10 ● _ ●
ρίζα Insert: Εισαγωγή του 17. Η ρίζα το στέλνει στον εσωτερικό κόμβο. 17 ● 10 ● _ ●
ρίζα Insert: ● 10 ● _ ● Ο εσωτερικός κόμβος καθορίζει σε ποιο από τα παιδιά θα στείλει το στοιχείο. 17
ρίζα Insert: ● 10 ● _ ● Το δεξί φύλλο το παραλαμβάνει και το αποθηκεύει.
ρίζα Insert: ● 10 ● _ ● Όμως έχει γεμίσει και έτσι δημιουργεί καινούργιο (split) μετακινώντας τα μεγαλύτερα στοιχεία σε αυτό
ρίζα Insert: ● 10 ● _ ● Επίσης επιστρέφει και τον δείκτη του νέου φύλλου με το μικρότερο στοιχείο (17) στον πατέρα του
ρίζα Insert: ● 10 ● 17 ● Ο εσωτερικός κόμβος χρησιμοποιεί τον δείκτη για να συνδέσει το νέο φύλλο
ρίζα ● 10 ● 17 ● Η εισαγωγή του 17 έχει ολοκληρωθεί.
ρίζα ● 10 ● 17 ● Insert: 6 6
ρίζα ● 10 ● 17 ● Insert: 6 6
ρίζα ● 10 ● 17 ● Insert: 6
ρίζα ● 10 ● 17 ● Insert: 4 4
ρίζα ● 10 ● 17 ● Insert: 4 4
ρίζα ● 10 ● 17 ● Insert: 4 Το αριστερό φύλλο έχει γεμίσει.
ρίζα ● 10 ● 17 ● Insert: 4 Δημιουργεί νέο φύλλο και μετακινεί τις μεγαλύτερες τιμές σε αυτό
ρίζα ● 10 ● 17 ● Insert: 4 Δημιουργεί επίσης και τον δείκτη με το μικρότερο στοιχείο (6) το οποίο επιστρέφεται στον πατέρα
ρίζα ● 6 ● 10 ● 17 ● Insert: 4 Ο εσωτερικός κόμβος ενημερώνει τα κλειδιά του με τον νέο δείκτη
ρίζα ● 6 ● 10 ● 17 ● Insert: 4 Όμως ο εσωτερικός κόμβος έχει γεμίσει
ρίζα ● 6 ● 10 ● Insert: 4 Ο εσωτερικός κόμβος δημιουργεί έναν νέο εσωτερικό κόμβο και αποθηκεύει στον νέο τα μεγαλύτερα κλειδιά με τους δείκτες τους ● 17 ● _●
ρίζα ● 6 ● _ ● Insert: 4 Δημιουργεί επίσης τον δείκτη του νέου εσωτερικού κόμβου με το μικρότερο κλειδί το οποίο και επιστρέφει στον πατέρα του (στη ρίζα) ● 17 ● _● 10
ρίζα ● 6 ● _ ● Insert: 4 Η ρίζα το παραλαμβάνει και αντιλαμβάνεται ότι πρέπει να δημιουργήσει νέο κόμβο-ρίζα που θα δείχνει στους δύο εσωτερικούς κόμβους ● 17 ● _● 10
ρίζα ● 6 ● _ ● Insert: ● 17 ● _● 10 ● 10 ● _●
Η εισαγωγή ολοκληρώθηκε. ρίζα ● 6 ● _ ● ● 17 ● _● ● 10 ● _●