Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries,...

69
Binary Search Tree vs. Balanced Search Tree

Transcript of Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries,...

Page 1: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Binary Search Treevs.

Balanced Search Tree

Page 2: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Why care about advanced implementations?

Same entries, different insertion sequence:10,20,30,40,50,60,70,

Not good! Would like to keep tree balanced.

40,60,20,50,70,10,30

Page 3: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3 Trees

each internal node has either 2 or 3 childrenall leaves are at the same level

Features

Page 4: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3 tree nodesleftChildelementrightChild

leftChild //pointerSelement // small element

rightChild // pointer

middleChild //pointerLelement // large element

Page 5: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3 Trees with Ordered Nodes

2-node 3-node

• leaf node can be either a 2-node or a 3-node

Page 6: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Example of 2-3 Tree

Page 7: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Traversing a 2-3 Treeinorder(ttTree )//TwoThreeTree

if(ttTree’s root node r is a leaf)visit the data item(s)

else if(r has two data items) // 3-node{

inorder(leftChild)visit the first data iteminorder(middleChild)visit the second data iteminorder(rightChild)

}else // 2-node{

inorder(leftChild)visit the data iteminorder(rightChild)

}

Page 8: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Searching a 2-3 Tree50,60,120,155

Page 9: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

What did we gain?Search 40, 70

the time efficiency of searching for an item

Page 10: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Insertion

inserting items39, 38, ... 32

Page 11: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Gain: Ease of Keeping the Tree Balanced

Binary SearchTree

2-3 Tree

both trees afterinserting items39, 38, ... 32

Page 12: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsInsert 39, 38

each internal node has either 2 or 3 children all leaves are at the same level

Page 13: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Insertion

Page 14: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsInsert 38

insert in leafdivide leaf

and move middlevalue up to parent

result

each internal node has either 2 or 3 children all leaves are at the same level

Page 15: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Insert 41, 15

Page 16: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsInsert 37

each internal node has either 2 or 3 children all leaves are at the same level

Page 17: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsInsert 36

insert in leaf

divide leafand move middlevalue up to parent

overcrowdednode

Page 18: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 19: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting Items... still inserting 36

divide overcrowded node,move middle value up to parent,

attach children to smallest and largest

result

Page 20: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Insert 25, insert 31

Page 21: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsInsertion of 35, 34, 33

Page 22: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsAfter Insertion of 35, 34, 33

Page 23: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsHow do we insert 32?

Page 24: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting Items creating a new root if necessary tree grows at the root

Page 25: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Inserting ItemsFinal Result

Page 26: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 27: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Exerciseinsert 25

Page 28: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 29: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

70

Deleting ItemsDelete 70

80

Page 30: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDeleting 70: swap 70 with inorder successor (80)

Page 31: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDeleting 70: ... get rid of 70

Page 32: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsResult

Page 33: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDelete 100

Page 34: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDeleting 100

Page 35: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsResult

Page 36: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDelete 80

Page 37: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDeleting 80 ...

Page 38: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDeleting 80 ...

Page 39: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsDeleting 80 ...

Page 40: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deleting ItemsFinal Result

comparison withbinary search tree

Page 41: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deletion Algorithm I

1. Locate node n, which contains item I

2. If node n is not a leaf swap I with inorder successor

deletion always begins at a leaf

3. If leaf node n contains another item, just delete item Ielse

try to redistribute nodes from siblings (see next slide)if not possible, merge node (see next slide)

Deleting item I:

Page 42: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 43: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 44: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 45: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 46: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 47: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deletion Algorithm II

A sibling has 2 items: redistribute item

between siblings andparent

No sibling has 2 items: merge node move item from parent

to sibling

Redistribution

Merging

Page 48: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deletion Algorithm III

Internal node n has no item left redistribute

Redistribution not possible: merge node move item from parent

to sibling adopt child of n

If n's parent ends up without item, apply process recursively

Redistribution

Merging

Page 49: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Deletion Algorithm IV

If merging process reaches the root and root is without item delete root

Page 50: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Delete 10, 40, 50,60,30

Page 51: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 52: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 53: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 54: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,
Page 55: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

Operations of 2-3 Trees

all operations have time complexity of height of the tree

Page 56: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Trees• similar to 2-3 trees• 4-nodes can have 3 items and 4 children

4-node

Page 57: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree Example

Page 58: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion

Insertion procedure:• similar to insertion in 2-3 trees• items are inserted at the leafs• since a 4-node cannot take another item,

4-nodes are split up during insertion process

Strategy• on the way from the root down to the leaf:

split up all 4-nodes "on the way"

insertion can be done in one pass(remember: in 2-3 trees, a reverse pass might be necessary)

Page 59: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion

Inserting 60, 30, 10, 20, 50, 40, 70, 80, 15, 90, 100

Page 60: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion

Inserting 60, 30, 10, 20 ...

... 50, 40 ...

Page 61: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion

Inserting 50, 40 ...

... 70, ...

Page 62: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion

Inserting 70 ...

... 80, 15 ...

Page 63: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion

Inserting 80, 15 ...

... 90 ...

Page 64: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion

Inserting 90 ...

Page 65: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion Procedure

Splitting 4-nodes during Insertion

Page 66: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion Procedure

Splitting a 4-node whose parent is a 2-node during insertion

Page 67: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Insertion Procedure

Splitting a 4-node whose parent is a 3-node during insertion

Page 68: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Deletion

Deletion procedure:• similar to deletion in 2-3 trees• items are deleted at the leafs swap item of internal node with inorder successor

• note: a 2-node leaf creates a problem

Strategy (different strategies possible)

• on the way from the root down to the leaf:turn 2-nodes (except root) into 3-nodes

deletion can be done in one pass(remember: in 2-3 trees, a reverse pass might be necessary)

Page 69: Binary Search Tree vs. Balanced Search Tree. Why care about advanced implementations? Same entries, different insertion sequence: 10,20,30,40,50,60,70,

2-3-4 Tree: Deletion PracticeDelete 32, 35, 40, 38, 80