SlideServe
Menu
Préférences
© SlideServe · v2026

B+ Trees

Olivia avatar
31 diapositives · 771 Views · Apr 06, 2013

B+ Trees. Similar to B trees, with a few slight differences All data is stored at the leaf nodes ( leaf pages ); all other nodes ( index pages ) only store keys Leaf pages are linked to each other Keys may be duplicated; every key to the right of a particular key is >= to that key.

B+ Trees - slide 1
01 / 31B+ Trees
1 / 17

Télécharger la présentation

B+ Trees
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. B+ Trees • Similar to B trees, with a few slight differences • All data is stored at the leaf nodes (leaf pages); all other nodes (index pages) only store keys • Leaf pages are linked to each other • Keys may be duplicated; every key to the right of a particular key is >= to that key 8/8/02

  2. B+ Tree Example 9, 16 2, 7 12 18 1 7 16 19 3, 4, 6 9 12 8/8/02

  3. B+ Tree Insertion • Insert at bottom level • If leaf page overflows, split page and copy middle element to next index page • If index page overflows, split page and move middle element to next index page 8/8/02

  4. B+ Tree Insertion Example 9, 16 Insert 5 2, 7 12 18 1 7 16 19 3, 4, 6 9 12 8/8/02

  5. B+ Tree Insertion Example 9, 16 Insert 5 2, 7 12 18 1 7 16 19 3, 4, 5,6 9 12 8/8/02

  6. B+ Tree Insertion Example 9, 16 Split page, copy 5 2, 5, 7 12 18 1 7 16 19 9 12 3, 4 5, 6 8/8/02

  7. B+ Tree Insertion Example 2 Insert 17 9, 13, 16 3, 4, 6 9 14 16, 18, 20 8/8/02

  8. B+ Tree Insertion Example 2 Insert 17 9, 13, 16 3, 4, 6 9 14 16, 17, 18, 20 8/8/02

  9. B+ Tree Insertion Example 2 Split leaf page, copy 18 9, 13, 16, 18 3, 4, 6 9 14 16, 17 18, 20 8/8/02

  10. B+ Tree Insertion Example 2 Split index page, move 13 13 9 16, 18 3, 4, 6 9 14 16, 17 18, 20 8/8/02

  11. B+ Tree Deletion • Delete key and data from leaf page • If leaf page underflows, merge with sibling and delete key in between them • If index page underflows, merge with sibling and move down key in between them 8/8/02

  12. B+ Tree Deletion Example Remove 9 13 9 16, 18 3, 4, 6 9 14 16, 17 18, 20 8/8/02

  13. B+ Tree Deletion Example Remove 9 13 9 16, 18 3, 4, 6 14 16, 17 18, 20 8/8/02

  14. B+ Tree Deletion Example Leaf page underflow, so merge with sibling and remove 9 13 16, 18 3, 4, 6 14 16, 17 18, 20 8/8/02

  15. B+ Tree Deletion Example Index page underflow, so merge with sibling and demote 13 13, 16, 18 3, 4, 6 14 16, 17 18, 20 8/8/02

  16. Threaded Trees • Binary trees have a lot of wasted space: the leaf nodes each have 2 null pointers • We can use these pointers to help us in inorder traversals • We have the pointers reference the next node in an inorder traversal; called threads • We need to know if a pointer is an actual link or a thread, so we keep a boolean for each pointer 8/8/02

  17. Threaded Tree Code • Example code: class Node { Node left, right; boolean leftThread, rightThread; } 8/8/02

  18. Threaded Tree Example 6 8 3 1 5 7 11 9 13 8/8/02

  19. Threaded Tree Traversal • We start at the leftmost node in the tree, print it, and follow its right thread • If we follow a thread to the right, we output the node and continue to its right • If we follow a link to the right, we go to the leftmost node, print it, and continue 8/8/02

  20. Threaded Tree Traversal Output 1 6 8 3 1 5 7 11 9 13 Start at leftmost node, print it 8/8/02

  21. Threaded Tree Traversal Output 1 3 6 8 3 1 5 7 11 9 13 Follow thread to right, print node 8/8/02

  22. Threaded Tree Traversal Output 1 3 5 6 8 3 1 5 7 11 9 13 Follow link to right, go to leftmost node and print 8/8/02

  23. Threaded Tree Traversal Output 1 3 5 6 6 8 3 1 5 7 11 9 13 Follow thread to right, print node 8/8/02

  24. Threaded Tree Traversal Output 1 3 5 6 7 6 8 3 1 5 7 11 9 13 Follow link to right, go to leftmost node and print 8/8/02

  25. Threaded Tree Traversal Output 1 3 5 6 7 8 6 8 3 1 5 7 11 9 13 Follow thread to right, print node 8/8/02

  26. Threaded Tree Traversal Output 1 3 5 6 7 8 9 6 8 3 1 5 7 11 9 13 Follow link to right, go to leftmost node and print 8/8/02

  27. Threaded Tree Traversal Output 1 3 5 6 7 8 9 11 6 8 3 1 5 7 11 9 13 Follow thread to right, print node 8/8/02

  28. Threaded Tree Traversal Output 1 3 5 6 7 8 9 11 13 6 8 3 1 5 7 11 9 13 Follow link to right, go to leftmost node and print 8/8/02

  29. Threaded Tree Traversal Code void inOrder(Node n) { Node cur = leftmost(n); while (cur != null) { print(cur); if (cur.rightThread) { cur = cur.right; } else { cur = leftmost(cur.right); } } } Node leftMost(Node n) { Node ans = n; if (ans == null) { return null; } while (ans.left != null) { ans = ans.left; } return ans; } 8/8/02

  30. Threaded Tree Modification • We’re still wasting pointers, since half of our leafs’ pointers are still null • We can add threads to the previous node in an inorder traversal as well, which we can use to traverse the tree backwards or even to do postorder traversals 8/8/02

  31. Threaded Tree Modification 6 8 3 1 5 7 11 9 13 8/8/02