26
Lecture 8: Binary Search Trees CSE 373: Data Structures and Algorithms CSE 373 SP 18 - KASEY CHAMPION 1

Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Lecture 8: Binary Search Trees

CSE 373: Data Structures and Algorithms

CSE 373 SP 18 - KASEY CHAMPION 1

Page 2: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Warm Up – Tree Method

CSE 373 SP 18 - KASEY CHAMPION 2

Page 3: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Tree Method Practice

3

! " =4 %ℎ'" " ≤ 13! "

4 + ,"- ./ℎ'0%12'

,n-

, n4

-

… …

, n4

-, n4

-

, n16

-, n16

-, n16

-, n16

-, n16

-, n16

-, n16

-, n16

-, n16

-

… … …… … …… … …… … …… … …… … …… … …… … ……

4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Answer the following questions:1. How many nodes on

each branch level?2. How much work for

each branch node?3. How much work per

branch level?4. How many branch

levels?5. How much work for

each leaf node?6. How many leaf

nodes?

EXAMPLE PROVIDED BY CS 161 – JESSICA SUHTTPS://WEB.STANFORD.EDU/CLASS/ARCHIVE/CS/CS161/CS161.1168/LECTURE3.PDF

! "4 ! "

4 ! "4

! "4 + ! "

4 + ! "4 + ,"-

Page 4: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Tree Method Practice

CSE 373 SP 18 - KASEY CHAMPION 4

Level (i) Number of Nodes

Work per Node

Work per Level

0 1 !"2 !"2

1 3 !"

4

% 316!"%

2 9 !"16

% 9256

!"%

base 3+,-./ 4 12+,-./

1. How many nodes on each branch level?

2. How much work for each branch node?

3. How much work per branch level?

4. How many branch levels?

5. How much work for each leaf node?

6. How many leaf nodes?

30

!"

40%

log. " − 1

4

5 " =4 7ℎ9" " ≤ 1

35"

4+ !"% <=ℎ9>7?@9

Combining it all together…

30!"

40%=

3

16

0

!"%

5 " = A0BC

+,-D / EF3

16

0

!"% + 4"+,-.G

3+,-D / power of a log

H+,-I J = K+,-I L"+,-D G

5 Minutes

Page 5: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Tree Method Practice

CSE 373 SP 18 - KASEY CHAMPION 5

! " = $%&'

()*+ , -. 316

%2"3 + 4"()*67

! " = 2"3 11 − 3

16+ 4"()*67

! " = 2"3316

()*+ ,− 1

316 − 1

+ 4"()*67

! " ∈ :("3)

$%&=

>2?(@) = 2$

%&=

>?(@)

factoring out a constant

! " = 2"3 $%&'

()*+ , -. 316

%+ 4"()*67

$%&'

,-.A% = A, − 1

A − 1

finite geometric series

$%&'

BA% = 1

1 − A

infinite geometric series

when -1 < x < 1

If we’re trying to prove upper bound…

! " = 2"3$%&'

B 316

%+ 4"()*67

Closed form:

Page 6: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Solving RecurrencesHow do we go from code model to Big O?

1. Explore the recursive pattern

2. Write a new model in terms of “i”3. Use algebra simplify the T away

4. Use algebra to find the “closed form”

CSE 373 SP 18 - KASEY CHAMPION 6

Using unrolling method1. Plug definition into itself to write out first few

levels of recursion2. Simplify away parenthesis but leave separate terms

to help identify pattern in terms of i3. Plug in a value of i to solve for base case, write

summation representing recursive work4. Using summation identities as appropriate reduced

to “closed form”

Using tree method1. Plug definition into itself to draw out first few levels of

tree2. Answer questions about nature of tree to identify work

done by recursive levels and base case in terms of i3. Combine answers to questions to complete model in

terms of i4. Using summation identities as appropriate reduced to

“closed form”

Page 7: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Is there an easier way?What if you do want an exact closed form?

Sorry, no

If we want to find a big Θ

Sometimes, yes!

CSE 373 SP 18 - KASEY CHAMPION 7

Page 8: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Master Theorem

CSE 373 SP 18 - KASEY CHAMPION 8

! " =$ %ℎ'" " = 1)! "

* + ", -.ℎ'/%01'

Given a recurrence of the following form:

Then thanks to magical math brilliance we can know the following:

! " ∈ Θ ",log7 ) < 9

log7 ) = 9 ! " ∈ Θ ", log: "

log7 ) > 9 ! " ∈ Θ "<=>? @

If

If

If

then

then

then

Page 9: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Apply Master Theorem

CSE 373 SP 18 - KASEY CHAMPION 9

! " =1 %ℎ'" " ≤ 12! "

2 + " +,ℎ'-%./'

! " =0 %ℎ'" " = 1

1! "2 + "3 +,ℎ'-%./'

log7 1 = 8 ! " ∈ Θ "3 log; "log7 1 > 8 ! " ∈ Θ "=>?@ A

If

If

! " ∈ Θ "3log7 1 < 8If then

then

then

Given a recurrence of the form:

a = 2b = 2c = 1d = 1

log7 1 = 8 ⇒ log; 2 = 1

! " ∈ Θ "3 log; " ⇒ Θ "D log; "

Page 10: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Reflecting on Master TheoremThe case - Recursive case conquers work more quickly than it divides work- Most work happens near “top” of tree- Non recursive work in recursive case dominates growth, nc term

The case - Work is equally distributed across call stack (throughout the “tree”)- Overall work is approximately work at top level x height

The case - Recursive case divides work faster than it conquers work- Most work happens near “bottom” of tree- Leaf work dominates branch work

CSE 373 SP 18 - KASEY CHAMPION 10

! " =$ %ℎ'" " = 1

)! "* + ", -.ℎ'/%01'

log5 ) = 6 ! " ∈ Θ ", log9 "log5 ) > 6 ! " ∈ Θ ";<=> ?

If

If

! " ∈ Θ ",log5 ) < 6If then

then

then

Given a recurrence of the form: log5 ) < 6

log5 ) = 6

log5 ) > 6

A')BC-/D ≈ $ ";<=> ?

ℎ'0Fℎ. ≈ log5 )*/)"6ℎC-/D ≈ ",log5 )

Page 11: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Trees

CSE 373 SP 18 - KASEY CHAMPION 11

Page 12: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Storing Sorted Items in an Arrayget() – O(logn)

put() – O(n)

remove() – O(n)

Can we do better with insertions and removals?

CSE 373 SP 18 - KASEY CHAMPION 12

Page 13: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Review: Trees!A tree is a collection of nodes- Each node has at most 1 parent and 0 or more children

Root node: the single node with no parent, “top” of the tree

Branch node: a node with one or more children

Leaf node: a node with no children

Edge: a pointer from one node to another

Subtree: a node and all it descendants

Height: the number of edges contained in the longest path from root node to some leaf node

CSE 373 SP 18 - KASEY CHAMPION 13

1

2 5

3 6 7

4 8

Page 14: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Tree HeightWhat is the height of the following trees?

CSE 373 SP 18 - KASEY CHAMPION 14

1

2 5

7

7

overallRoot overallRoot overallRoot

null

Height = 2 Height = 0 Height = -1 or NA

2 Minutes

Page 15: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Traversalstraversal: An examination of the elements of a tree.– A pattern used in many tree algorithms and methods

Common orderings for traversals:– pre-order: process root node, then its left/right subtrees– 17 41 29 6 9 81 40– in-order: process left subtree, then root node, then right– 29 41 6 17 81 9 40– post-order: process left/right subtrees, then root node– 29 6 41 81 40 9 17

Traversal Trick: Sailboat method– Trace a path around the tree.– As you pass a node on the

proper side, process it.• pre-order: left side• in-order: bottom• post-order: right side

CSE 373 SP 17 – ZORA FUNG 15

4081

941

17

629

overallRoot

Page 16: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Binary Search TreesA binary search tree is a binary tree that contains comparable items such that for every node, all children to the left contain smaller data and all children to the right contain larger data.

CSE 373 SP 18 - KASEY CHAMPION 16

10

9 15

7 12 18

8 17

Page 17: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Implement DictionaryBinary Search Trees allow us to:- quickly find what we’re looking for- add and remove values easily

Dictionary Operations:Runtime in terms of height, “h”get() – O(h)put() – O(h)remove() – O(h)

What do you replace the node with?Largest in left sub tree or smallest in right sub tree

CSE 373 SP 18 - KASEY CHAMPION 17

10

“foo”

7

“bar”

12

“baz”

9

“sho”

5

“fo”

15

“sup”

13

“boo”

8

“poo”

1

“burp”

Page 18: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Height in terms of NodesFor “balanced” trees h ≈ logc(n) where c is the maximum number of children

Balanced binary trees h ≈ log2(n)

Balanced trinary tree h ≈ log3(n)

Thus for balanced trees operations take Θ(logc(n))

CSE 373 SP 18 - KASEY CHAMPION 18

Page 19: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Unbalanced TreesIs this a valid Binary Search Tree?

Yes, but…

We call this a degenerate treeFor trees, depending on how balanced they are,

Operations at worst can be O(n) and at best

can be O(logn)

How are degenerate trees formed?- insert(10)- insert(9)- insert(7)- insert(5)

CSE 373 SP 18 - KASEY CHAMPION 19

10

9

7

5

Page 20: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Measuring BalanceMeasuring balance:

For each node, compare the heights of its two sub trees

Balanced when the difference in height between sub trees is no greater than 1

CSE 373 SP 18 - KASEY CHAMPION 20

10

15

12 18

8

7

78

7 9

Balanced

Unbalanced

Balanced

Balanced

2 Minutes

Page 21: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Meet AVL TreesAVL Trees must satisfy the following properties: - binary trees: all nodes must have between 0 and 2 children- binary search tree: for all nodes, all keys in the left subtree must be smaller and all keys in the right subtree must be

larger than the root node- balanced: for all nodes, there can be no more than a difference of 1 in the height of the left subtree from the right.

Math.abs(height(left subtree) – height(right subtree)) ≤ 1

AVL stands for Adelson-Velsky and Landis (the inventors of the data structure)

CSE 373 SP 18 - KASEY CHAMPION 21

Page 22: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Is this a valid AVL tree?

CSE 373 SP 18 - KASEY CHAMPION 22

7

4 10

3 9 125

8 11 13

14

2 6

Is it…- Binary- BST- Balanced?

yesyesyes

Page 23: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Is this a valid AVL tree?

CSE 373 SP 18 - KASEY CHAMPION 23

6

2 8

1 7 124

9

10 13

11

3 5

Is it…- Binary- BST- Balanced?

yesyesno

Height = 2Height = 0

2 Minutes

Page 24: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Is this a valid AVL tree?

CSE 373 SP 18 - KASEY CHAMPION 24

8

6 11

2 157

-1 9

Is it…- Binary- BST- Balanced?

yesnoyes

9 > 85

2 Minutes

Page 25: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

Implementing an AVL tree dictionaryDictionary Operations:

get() – same as BST

containsKey() – same as BST

put() - ???

remove() - ???

CSE 373 SP 18 - KASEY CHAMPION 25

Add the node to keep BST, fix AVL property if necessary

Replace the node to keep BST, fix AVL property if necessary

1

2

3

Unbalanced!

2

1 3

Page 26: Lecture 8: Binary Search - University of Washington · Review:Trees! A treeis a collection of nodes-Each node has at most 1 parent and 0 or more children Root node: the single node

CSE 373 SP 18 - KASEY CHAMPION 26