Tuesday, 11 March 2014

B-Trees


Definition

A m-way tree in which
  • The root has at least one key
  • Non-root nodes have at least  |~ m/2 ~|  subtrees (i.e., at least  |_ (1)/2 _|  keys)
  • All the empty subtrees (i.e., external nodes) are at the same level
B-tree of order 3not a B-tree
            |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -22--26|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -24-| -28--30-|              |---|
              |18 |
           ------- ---
       -----         ------
    |---|              |------|
    --6-|              -22-26-|
   ||                --   |    --
  ||               ---   ||     ---
|---|            |---|  |--|  |---|---|
--4-|            -20-|  -24|  -28--30-|
B-trees are especially useful for trees stored on disks, since their height, and hence also the number of disk accesses, can be kept small.
The growth and contraction of m-way search trees occur at the leaves. On the other hand, B-trees grow and contract at the root.

Insertions

  • Insert the key to a leaf
  • Overfilled nodes should send the middle key to their parent, and split into two at the location of the submitted key.
            |---|
            -18-|
        ----    ----
     ----           ---
   |---|           |---|--|
   |-6-|          --22-|26|-
  ||    |       ---   ||   ---
|-|-| |-|-|  |---|  |-|-| |-------|
|4  | | 8 |  |20 |  |24 | |28 |30 |
----   ----  ----   ----  --------
add 19             |---|
             |   |
            --18----
        -----      -----
   |----              |---|--|
   | 6 |              |22 |26|
   |--- |           ||----|---||
  ||    |         |||     |    |||
|-|-|  ||-|  |---||--|  |--|  |---|---|
|4  |  |8 |  |19 |20 |  |24|  |28 |30 |
----   ----  --------   ----  --------
add 21               |---|
               |18 |
            -----------
      ------          -------
   |---|                 |------|
   --6-|                 -22|-26-|
  ||    |             ---   ||   ---
  |     ||         ----      |     ----
|---|  |--|  |---|---|---|  |--|  |---|---|
--4-|  -8-|  -19--20--21-|  -24|  -28--30-|
               |---|
               |18 |
            -----------
      ------          -------
   |---|                 |------|
   |-6-|                 -22|26-|
   |    |             ---   ||   ---
  |     ||         ----      |     ----
|---|  |---| |--||---||--| |---|  |---|---|
--4-|  -8--| -19|-20-|-21| |24-|  -28--30-|
             |---|
             |18 |
          ------- ---
     ------         ------
   |---|            |---|--|---|
   -6--|            -20--22|-26-|
  |    ||        ---  |||   |   ---
 ||     |      ---   ||     |     ---
|--|  |---|  |---| |---|  |---|  |--|---|
-4-|  --8-|  -19-| -21-|  -24-|  -28|30-|
             |---|
             |18 |
          ------- ---
     ------         ------
   |---|           |---||--| |--|
   -6--|           -20-|-22| -26|
  |    ||        ---   ||   |   ---
 ||     |      ---   ||     |     ---
|--|  |---|  |---| |---|  |---|  |--|---|
-4-|  --8-|  -19-| -21-|  -24-|  -28|30-|
               |--|---|
               |18| 22 |
           -------|--------
      ------      |       ------
   |---|        |---|         |---|
   -6--|        -20-|         -26-|
  |    ||      ||   ||       ||    |
 ||     |      |     |      ||      |
|--|  |---|  |---| |---|  |---|  |--|---|
-4-|  --8-|  -19-| -21-|  -24-|  -28|30-|

Deletions

  • Key that is to be removed from a node with non-empty subtrees is being replaced with the largest key of the left subtree or the smallest key in the right subtree. (The replacement is guaranteed to come from a leaf.)
                |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -22--26|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -24-| -28--30-|
    remove 26            |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -22----|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -24-| -28--30-|
                |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -22--28|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -24-| -----30-|
               |---|
           |18 |
         ------ ---
      ----        ----
   |---|          |---|--|
   --6-|          -22--28|
  ||   ||       ||    |   ||
  |     |      ||     |    ||
|---| |---|  |---|  |--|  |---|
-4--| --8-|  -20-|  -24|  -30-|
  • If a node becomes under staffed, it looks for a sibling with an extra key. If such a sibling exist, the node takes a key from the parent, and the parent gets the extra key from the sibling.
                |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -22--26|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -24-| -28--30-|
    remoce 22            |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -----26|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -24-| -28--30-|
                |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -24--26|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  ----| -28--30-|
                |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -24----|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -26-| -28--30-|
                |---|
            |18 |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -24--28|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -26-| -----30-|
               |---|
           |18 |
         ------ ---
      ----        ----
   |---|          |---|--|
   --6-|          -24--28|
  ||   ||       ||    |   ||
  |     |      ||     |    ||
|---| |---|  |---|  |--|  |---|
-4--| --8-|  -20-|  -26|  -30-|
  • If a node becomes under staffed, and it can’t receive a key from a sibling, the node is merged with a sibling and a key from the parent is moved down to the node.
                |---|
            -18-|
        ----    ----
     ----           ---
   |---|           |---|--|
   |-6-|          --22-|26|-
  ||    |       ---   ||   ---
|-|-| |-|-|  |---|  |-|-| |-------|
|4  | | 8 |  |20 |  |24 | |28 |30 |
----   ----  ----   ----  --------
    remove 18            |---|
            |   |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -22--26|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |-8-|  -20-|  -24-| -28--30-|
                |---|
            |8  |
         ----------
      ----        -----
   |---|           |---|--|
   --6-|           -22--26|
  ||   ||        --   ||   --
  |     |      ---    |      --
|---| |---|  |---|  |---| |---|---|
-4--| |---|  -20-|  -24-| -28--30-|
                   |---|
               | 8 |
             ------ ---
         -----        -----
      |---|           |-------|
      ----|           |22--26-|
     ||             ---   |    --
    ||             --    ||     ---
|---|---|        |---| |---|  |---|---|
--4--6--|        -20-| -24-|  -28--30-|
                   |---|
               |   |
             ------ ---
         -----        -----
      |---|           |-------|
      --8-|           |22--26-|
     ||             ---   |    --
    ||             --    ||     ---
|---|---|        |---| |---|  |---|---|
--4--6--|        -20-| -24-|  -28--30-|
                   |---|
               |22 |
             ------ ---
         -----        -----
      |---|           |-------|
      --8-|           |----26-|
     ||             ---   |    --
    ||             --    ||     ---
|---|---|        |---| |---|  |---|---|
--4--6--|        -20-| -24-|  -28--30-|
                  |---|
              |22 |
            ---------
         ----       ----
      |---|           |--|
      |-8-|           -26|
     ||    ||       ||    ||
    ||      ||     ||      ||
|---|---|  |---| |---|  |---|---|
--4---6-|  -20-| -24-|  -28--30-|

No comments:

Post a Comment

 

FACEBOOK PAGE

SKETCHES & PAINTINGS