csc 213 lecture 8: (2,4) trees. review of last lecture binary search tree – plain and tall no...

28
CSC 213 Lecture 8: (2,4) Trees

Upload: gyles-hunt

Post on 17-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

CSC 213

Lecture 8: (2,4) Trees

Page 2: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Review of Last Lecture

Binary Search Tree – plain and tall No balancing, no splaying, no speed

AVL Tree – liberté, égalité, fraternité Traverse up the tree & check for balance When a node’s children’s heights differ

by 2 or more Each restructure uses node, taller child,

tallest grandchild

Page 3: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Review of Last Lecture

Splay Tree – Greed is Good Splay a node until it becomes the root Each splay operation involves the

node, its parent, and its grandparent Only exception is if a node’s parent is the

root

Page 4: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Multi-Way Search Tree (§ 9.4.1)

A multi-way search tree is an ordered treeEach internal node in a multi-way search tree: Has at least 2 children (can have more!) Has 1 fewer entries than it has children Keeps its entries and children in sorted order

11 24

2 6 8 15

30

27 32

Page 5: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Multi-Way Search Tree (§ 9.4.1)

For a node with children v1 v2 … vd storing entries with keys k1 k2 … kd1

Keys in the subtree of v1 are smaller than k1

Keys in the subtree of vi are between ki1 and ki

Keys in the subtree of vd are greater than kd1

11 24

2 6 8 15

30

27 32

11

2 6 8 15

11 2424

Page 6: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Multi-Way Inorder Traversal

Can traverse multi-way search trees in-orderAlternate visiting child i then entry ei

Like with a BST, inorder traversal visits keys in increasing order

11 24

2 6 8 15

30

27 321 2 3 7 9

4 6

5

8

Page 7: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Multi-Way SearchingSimilar to search in a BSTAt each with children v1 v2 … vd and entries e1 e2 … ed1

for i = 1 to d – 1 if k ki: return result of search in child vi

if k = ki: return ei

Return result of search in child vd Throw exception if we reach an external node

Example: find(30)11 24

2 6 8 15

30

27 3227 32

30

27 32

Page 8: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Multi-Way SearchingSimilar to search in a BSTAt each with children v1 v2 … vd and entries e1 e2 … ed1

for i = 1 to d – 1 if k ki: return result of search in child vi

if k = ki: return ei

Return result of search in child vd Throw exception if we reach an external node

Example: find(1)11 24

2 6 8 15

30

27 322 6 8

Page 9: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

(2,4) Trees (§ 9.4.2)(2,4) tree is multi-way search tree with 2 properties:

Node-Size Property: internal nodes have at most 4 children Depth Property: all the external nodes have the same depth

Nodes can be a 2-node, 3-node or 4-node

10 15 24

2 8 12 27 3218

Page 10: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Height of a (2,4) Tree(2,4) tree of size n has height O(log n) In the largest tree, each node has 2 children But external nodes must be at same depth

This property automatically balances the tree!

This worst case scenario: a balanced binary tree!

1

2

2h1

0

entries

0

1

h1

h

depth

Page 11: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

InsertionBegin with a search for the key kIf k does not exist within the tree, add entry to last internal node we searched in……thereby preserving the depth propertyExample: insert(30)

27 32 35

10 15 24

2 8 12 18

10 15 24

2 8 12 27 30 32 3518

27 32 35v

v

Page 12: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

InsertionThis insertion can cause an overflow! Node v became a 5-node This violates Node-Size property

27 32 35

15 24

12 18

15 24

12 27 30 32 3518

v

v

1 2 3 4 5

Page 13: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Overflow and SplitHandle overflow using split:

Split node v into 2 nodes (v' and v") A 3-node (v’) with keys e1 e2 and children v1 v2 v3

A 2-node (v’’) with key e4 and children v4 v5

Promote e3 to parent node u (this may create new root)

This may cause parent node (u) to overflow

15 24

12 27 30 32 3518v

u

v1 v2 v3 v4 v5

15 24 32

12 27 3018v'

u

v1 v2 v3 v4 v5

35v"

Page 14: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Overflow and Split

Splitting a node when the parent also overflows is similar, but takes a little more work Example: insert(29)

15 24 32

12 27 28 29 3018 3527 28 30

Page 15: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Overflow and Split

Example: insert(29)

15 24 29 32

12 27 2818 3530

Page 16: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Overflow and Split

Example: insert(29)

15 24 29 32

12 27 2818 3530

Page 17: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Overflow and Split

Example: insert(29)

15 24

12 27 2818 3530

29

32

Page 18: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Overflow and Split

Example: insert(29)

15 24

12 27 2818 3530

29

32

Page 19: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Overflow and Split

Example: insert(29)But this promotion could also cause an overflow…

15 24

12 27 2818 3530

29

32

Page 20: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Analysis of InsertionAlgorithm insert(k, o)

1. Search for key k to find insert node v

2. Add the new entry (k, o) at node v

3. while overflow(v)if isRoot(v)

create a new empty root above vsplit(v)v parent(v)

What is big-Oh time for: Step 1?

Step 2?

Checking overflow(v)?

Calling isRoot(v)?

Calling split(v)?

Step 3?

insert(k,o) big-Oh time?

Page 21: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Deletion

Deletion from a leaf node is simple: Just remove the entry and the null child

Example: delete(27)

27 32 35

10 15 24

2 8 12 18

32 35

10 15 24

2 8 12 18

27 32 35

Page 22: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

DeletionIf entry is not at a leaf node, replace it with inorder successor Go to right child and then go as far left as possible

Example: delete(24)

27 32 35

10 15 24

2 8 12 18

32 35

10 15 27

2 8 12 18

27 32 35

Page 23: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Underflow and FusionDeleting an entry may cause underflow Cause a node to be a 1-node (has one child,

but no entries) This has two solutions, the solution depends

on the situation

Example: remove(15)

9 14

2 5 7 10 15

9 149 14

Page 24: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

FusionCase 1: v has adjacent siblings that is a 2-node Make new node (v’) by merging node (v) with

adjacent sibling (w) Steal entry from parent (u) that was between v & w

This may propagate underflow to the parent!

Example: remove(15)

9 14

2 5 7 10 15

u

v

9 14

10 14

u

v'w2 5 7 10

99 14

Page 25: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

6 8

TransferCase 2: v has adjacent sibling w that is 3- or 4-node

Move entry in u that is between w & v into v Promote entry in w that is closest to v into u Make child of w that is next to v be a child of v No more underflows can exist

Example: remove(10)

4 9

6 82 10

u

vw2

u

vw

4 9

9

4 94

6 8

4 8

6

Page 26: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Analysis of DeletionWhat is big-Oh time needed for deletion?

Height of tree = O(log n)

Time to find entry to delete

Time needed for each fusion

Maximum possible number of fusions

Time needed for transfer

Maximum possible number of transfers

Total time needed for deletion

Page 27: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Your Turn

Insert 1, 2, 3, 4, 5, 6, 7, 8 into a(2,4) treeDelete 3, 6, 5, 2, 8, 4, 1, 7 from your tree

Page 28: CSC 213 Lecture 8: (2,4) Trees. Review of Last Lecture Binary Search Tree – plain and tall No balancing, no splaying, no speed AVL Tree – liberté, égalité,

Daily Quiz

Write the Node class for a (2,4)-tree. What public methods should you define (does it make sense to include all getters and setters)? You will want to consider using other data structures in your Node.