binary search tree vs. balanced search tree. why care about advanced implementations? same entries,...

69
Binary Search Tree vs. Balanced Search Tree

Upload: josephine-pierce

Post on 04-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

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