Chapter 12 - Multiway Trees

download Chapter 12 - Multiway Trees

of 44

Transcript of Chapter 12 - Multiway Trees

  • 8/6/2019 Chapter 12 - Multiway Trees

    1/44

    Chapter 12

    Lexicographic Search Trees: Tries

    Multiway Trees

    B-Tree, B*-Tree, B+-Tree

    Red-Black Trees (BST and B-Tree)

    2-d Tree, k-d Tree

    1

  • 8/6/2019 Chapter 12 - Multiway Trees

    2/44

    Basic Concepts

    2

  • 8/6/2019 Chapter 12 - Multiway Trees

    3/44

  • 8/6/2019 Chapter 12 - Multiway Trees

    4/44

    Trees

    4

  • 8/6/2019 Chapter 12 - Multiway Trees

    5/44

    5

  • 8/6/2019 Chapter 12 - Multiway Trees

    6/44

    Trees and Orchard

    6

  • 8/6/2019 Chapter 12 - Multiway Trees

    7/447

  • 8/6/2019 Chapter 12 - Multiway Trees

    8/44

    Lexicographic Search Tree

    8

  • 8/6/2019 Chapter 12 - Multiway Trees

    9/44

    Multiway Trees

    9

  • 8/6/2019 Chapter 12 - Multiway Trees

    10/4410

  • 8/6/2019 Chapter 12 - Multiway Trees

    11/4411

  • 8/6/2019 Chapter 12 - Multiway Trees

    12/44

    M-Way Search Tree

    12

  • 8/6/2019 Chapter 12 - Multiway Trees

    13/4413

  • 8/6/2019 Chapter 12 - Multiway Trees

    14/44

    14

  • 8/6/2019 Chapter 12 - Multiway Trees

    15/44

    15

  • 8/6/2019 Chapter 12 - Multiway Trees

    16/44

    B-Tree

    16

  • 8/6/2019 Chapter 12 - Multiway Trees

    17/44

    17

  • 8/6/2019 Chapter 12 - Multiway Trees

    18/44

    B-Tree Insertion

    18

  • 8/6/2019 Chapter 12 - Multiway Trees

    19/44

    B-Tree Insertion

    19

  • 8/6/2019 Chapter 12 - Multiway Trees

    20/44

    B-Tree

    B_Node

    count

    data

    branch

    End B_Node

    B_Tree

    root

    End B_Tree

    20

  • 8/6/2019 Chapter 12 - Multiway Trees

    21/44

    Methods and Functions

    SearchTree recursiveSearchTree(calls)

    SearchNode

    Insert recursiveInsert

    splitNode

    push_in

  • 8/6/2019 Chapter 12 - Multiway Trees

    22/44

    B-Tree SeachTree

    22

    SearchTree (reftarget )

    1. return recursiveSearchTree(root, target)

    End SearchTree

  • 8/6/2019 Chapter 12 - Multiway Trees

    23/44

    B-Tree SeachTree

    23

    recursiveSearchTree (val subroot ,

    reftarget )

    1. result = not_present

    2. if(subroot is not NULL)

    1. result = SearhNode (subroot, target, position)2. if(result = not_present)

    1. result = recursiveSearchTree ( subroot->branchposition, target)

    3. else

    1. target = subroot->dataposition

    3. return result

    End recursiveSearchTree

  • 8/6/2019 Chapter 12 - Multiway Trees

    24/44

    B-Tree SeachTree

    24

    SearchNode (val subroot ,

    val target ,

    refposition )

    1. position = 02. loop (position < subroot->count) AND (target>subroot->dataposition)

    1. position = position + 1 // Sequential Search

    3. if(position < subroot->count) AND (target = subroot->dataposition)

    1. return success

    4. else

    1. return not_present

    End SearchNode

  • 8/6/2019 Chapter 12 - Multiway Trees

    25/44

    Methods and Functions

    SearchTree recursiveSearchTree(calls)

    SearchNode

    Insert recursiveInsert

    splitNode

    push_in

  • 8/6/2019 Chapter 12 - Multiway Trees

    26/44

    B-Tree Insertion

    26

    Insert (val newData )

    (local variable: median , rightBranch ,newroot , result )

    Return duplicate_error, success

    1. result = recursiveInsert (root, newData, median, rightBranch)

    2. if (result = overflow)1. Allocate newroot

    2. newroot->count = 1

    3. newroot->data0 = median

    4. newroot->branch0 = root5. newroot->branch1 = rightBranch

    6. root = newroot

    7. result = success

    3. return resultEnd Insert

  • 8/6/2019 Chapter 12 - Multiway Trees

    27/44

    Split Node

    27

  • 8/6/2019 Chapter 12 - Multiway Trees

    28/44

    B-Tree Insertion

    28

    recursiveInsert (val subroot ,

    val newData ,

    refmedian ,

    refrightBranch )

    Return overflow, duplicate_error, success

    1. if(subroot = NULL)

    1. median = newData

    2. rightbranch = NULL

    3. result = overflow

    2. else

    recursiveInsert (val subroot

  • 8/6/2019 Chapter 12 - Multiway Trees

    29/44

    29

    recursiveInsert (val subroot ,

    val newData ,

    refmedian ,

    refrightBranch ) (cont.)

    2. // else, local variables: extraEntry, extraBranch

    1. if(SearchNode (subroot, newData, position) = success)

    1. result = duplicate_error

    2. else

    1. result = recursiveInsert (subroot->branchposition, newData,extraEntry, extraBranch)

    2. if(result = overflow)

    1. if(subroot->count < order-1)

    1. result = success

    2. push_in (subroot, extraEntry, extraBranch, position)

    2. else

    1. splitNode (subroot, extraEntry, extraBranch, position,

    rightBrach, median)

    3. return result

    End recursiveInsert

  • 8/6/2019 Chapter 12 - Multiway Trees

    30/44

    Push In

    30

  • 8/6/2019 Chapter 12 - Multiway Trees

    31/44

    B-Tree

    31

    push_in (val subroot ,

    val entry ,val rightBranch ,

    val position )

    1. i = subroot->count

    2. loop ( i > position)

    1. subroot->datai = subroot->datai - 12. subroot->branchi + 1 = subroot->branchi3. i = i + 1

    3. subroot->data position= entry

    4. subroot->branch position + 1= rightBranch

    5. subroot->count = -subroot->count + 1

    End push_in

  • 8/6/2019 Chapter 12 - Multiway Trees

    32/44

    B-Tree

    32

    splitNode (val subroot ,

    val extraEntry ,val extraBranch ,

    val position ,

    refrightHalf,

    refmedian )

  • 8/6/2019 Chapter 12 - Multiway Trees

    33/44

    B-Tree Insertion

    33

  • 8/6/2019 Chapter 12 - Multiway Trees

    34/44

    B-Tree Insertion

    34

  • 8/6/2019 Chapter 12 - Multiway Trees

    35/44

    35

  • 8/6/2019 Chapter 12 - Multiway Trees

    36/44

    B-Tree Deletion

    36

  • 8/6/2019 Chapter 12 - Multiway Trees

    37/44

    B-Tree Deletion

    37

  • 8/6/2019 Chapter 12 - Multiway Trees

    38/44

    B-Tree Deletion

    38

  • 8/6/2019 Chapter 12 - Multiway Trees

    39/44

    39

  • 8/6/2019 Chapter 12 - Multiway Trees

    40/44

    40

  • 8/6/2019 Chapter 12 - Multiway Trees

    41/44

    41

  • 8/6/2019 Chapter 12 - Multiway Trees

    42/44

    42

  • 8/6/2019 Chapter 12 - Multiway Trees

    43/44

    43

    k d T

  • 8/6/2019 Chapter 12 - Multiway Trees

    44/44

    k-d Trees

    2-d Tree

    k-d Tree