B-Trees and Rank Trees Beyond Binary Search Trees

B-Trees and Rank Trees Beyond Binary Search Trees

Beyond Binary Search Trees: B-Trees and Rank Trees Multi-Way Trees • Example: B-tree of order 3 has 2 or 3 CSE 326 children per node Data Structures 13:- Unit 7 6:11 17:- Reading: Section 4.7 (B trees only) 3 4 6 7 8 11 12 13 14 17 18 • Search for 8 2 B-Trees B-Tree Details B-Trees are multi-way search trees commonly used in database systems or other applications where data is stored externally on disks and keeping the tree shallow is important. Each (non-leaf) internal node of a B-tree has: › Between M/2 and M children. A B-Tree of order M has the following properties: < < ... < 1. The root is either a leaf or has between 2 and M children. › up to M-1 keys k1 k2 kM-1 2. All nonleaf nodes (except the root) have between M/2 and M children. k1 . ki-1 ki . kM-1 3. All leaves are at the same depth. All data records are stored at the leaves. Internal nodes have “keys” guiding to the leaves. Keys are ordered so that: Leaves store between M/2 and M data records. < < ... < k1 k2 kM-1 3 4 Properties of B-Trees Example: Searching in B-trees k1 . ki-1 ki . kM-1 • B-tree of order 3: also known as 2-3 tree (2 to 3 children) 13:- - means empty slot T1 . Ti . TM 6:11 17:- Children of each internal node are "between" the items in that node. Suppose subtree Ti is the ith child of the node: all keys in T must be between keys k and k i i-1 i 3 4 6 7 8 11 12 13 14 17 18 ≤ < i.e. ki-1 Ti ki ki-1 is the smallest key in Ti • Examples: Search for 9, 14, 12 All keys in first subtree T < k 1 1 • Note: If leaf nodes are connected as a Linked List, B- All keys in last subtree T ≥ k M M-1 tree is called a B+ tree – Allows sorted list to be accessed easily 5 6 Inserting into B-Trees Deleting From B-Trees • Insert X: Do a Find on X and find appropriate leaf node • Delete X : Do a find and remove from leaf › If leaf node is not full, fill in empty slot with X • E.g. Insert 5 › Leaf underflows – borrow from a neighbor › If leaf node is full, split leaf node and adjust parents up to root • E.g. 11 node › Leaf underflows and can’t borrow – merge nodes, delete parent • E.g. Insert 9 13:- • E.g. 17 13:- 6:11 17:- 6:11 17:- 3 4 6 7 8 11 12 13 14 17 18 3 4 6 7 8 11 12 13 14 17 18 7 8 Run Time Analysis of B-Tree Storing Additional Data in a Operations Tree Node • For a B-Tree of order M • In many cases, it is useful to store additional › Each internal node has up to M-1 keys to search data in each node. This information can be used to implement efficiently additional › Each internal node has between M/2 and M children operations. › Depth of B-Tree storing N items is O(log N) M/2 • Definition: The rank of a value x in a set S is • Find: Run time is: the location of x in a sorted list of the › O(log M) to binary search which branch to take at each elements of S. node. But M is small compared to N. › Example rank(5) in {8,2,7,5} is 2. › Total time to find an item is O(depth*log M) = O(log N) • Problem 1: rank(x) in O(log N) • Problem 2: sum of elements smaller than x in 9 O(log N). 10 Storing Additional Data in a Rank Tree Tree Node • We will solve these problems by storing • A rank tree is a tree in which we keep in additional data in the tree nodes. each node v (in addition to all other data) the number, n(v), of nodes in the subtree • First – we will see a solution in O(Tree rooted at v. depth) 15 8 6 • Next – we will see how to update and use the additional data in a balanced 2 5 3 2 search tree. 1 1 3 1 1 1 1 1 11 12 Rank Tree Rank Tree 15 • What is the rank of x? 8 6 2 5 15 3 2 8 6 1 1 3 x 1 1 1 2 5 3 2 1 1 x Consider the path, p, from the root to x. 1 1 3 1 1 1 rank(x) = wn(w) + |{v in p and v<x}| , 1 1 w is a left child of a node with value v≤x in p. Where in the tree are the values smaller than x? In the example, rank(x) = 2+1+1+ 2 = 6. 13 Time to calculate rank(x) is O(Tree depth) 14 Storing additional data Storing additional data • Assume that we keep in each node v (in • Example: what is the sum of values smaller addition to all other data) the sum, s(v), of than 17? all the values in the subtree rooted at v. • Sum the values along the search path for 17, that are smaller than 17 + the values stored in 100 8 their left children. 100 8 13 5 10 79 13 5 10 79 2 2 6 6 9 60 9 20 2 6 60 2 6 9 9 20 Recall Problem 2: find sum of values smaller than x in 15 15 25 25 (8+13)+(10+9)+(15+0)=55 15 25 25 O(log N). 15 15 16 Balanced Rank Tree Updating the additional data • In order to implement rank(x) in O(log N) we • How do we update n(v)? update the value n(v) for each node for which 1. When inserting a node, increase by 1 all the values this value is affected by n(v) along the insertion path from the root to the leaf. insertions/deletions/rotations/any other 2. During rotations, update the values as needed: balancing operations. example: LL rotation n(A)+n(v3)+1 • The challenge – make these updates efficiently. n(B) B A n(B)-n(A)+n(v2) n(A) n(v1) B • We will see as example the way n(v) is updated A n(v3) Al n(v2) n(v3) n(v2) in AVL trees. n(v1) Br Ar Br Al h Ar v 17 v 18 Updating the additional data Exercise • How do we update s(v) [sum of values in subtree]? Suggest a data structure that will support the following operations, 1. When inserting a value x, increase by x all the values each in O(log n), where n is the number of elements in the structure s(v) along the insertion path from the root to the leaf. at the time of the operation. 2. During rotations, update the values as needed: example: LL rotation The elements in the structure are integral number, each element is colored green or red. s(A)+s(v )+B •Insert(i) – add the number i to the structure (if it is not there yet). A s(B) 3 B A new number is added as green. s(v1) s(A) B s(B)-s(A)+s(v2) •PaintRed(i) – if i is in the structure, and it is green, color it red. A s(v3) Al s(v2) s(v3) •FindDiff(k) – return the difference between the sum of the green s(v2) s(v1) Br Ar Br elements that are smaller than k, and the sum of the red elements Al h Ar v that are smaller than k. v 19 20 Summary of Search Trees • Problem with Binary Search Trees: Must keep tree balanced to allow fast access to stored items • AVL trees: Insert/Delete operations keep tree balanced • Splay trees: Repeated Find operations produce balanced trees • Multi-way search trees (e.g. B-Trees): More than two children › per node allows shallow trees; all leaves are at the same depth › keeping tree balanced at all times • By storing additional data in tree nodes, many other operations can be supported in O(log n). 21.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    6 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us