binary search trees: introduction - wordpress.com · 08/07/2016  · binary search trees:...

Post on 17-Jul-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Binary Search Trees:Introduction

Daniel KaneDepartment of Computer Science and Engineering

University of California, San Diego

Data StructuresData Structures and Algorithms

Learning Objectives

Provide examples of the sorts ofproblems we hope to solve with BinarySearch Trees.Show why data structures that we havealready covered are insufficient.

Outline

1 Local Search

2 Attempts

Dictionary SearchFind all words that start with some givenstring.

Date Ranges

Find all emails received in a given period.

Closest HeightFind the person in your class whose height isclosest to yours.

Local Search

DefinitionA Local Search Datastructure stores anumber of elements each with a key comingfrom an ordered set. It supports operations:

RangeSearch(x , y): Returns allelements with keys between x and y .NearestNeighbors(z): Returns theelement with keys on either side of z .

Example

RangeSearch(5, 12)

NearestNeighbors(3)

Example

RangeSearch(5, 12)

NearestNeighbors(3)

Example

RangeSearch(5, 12)

NearestNeighbors(3)

Dynamic Data Structure

We would also like to be able to modify thedata structure as we go.

Insert(x): Adds a element with key x .Delete(x): Removes the element withkey x .

Example

Insert(3)

Delete(10)

Example

Insert(3)

Delete(10)

Example

Insert(3)

Delete(10)

ProblemIf an empty data structure is given thesecommands what does it output at the end?

Insert(3)Insert(8)Insert(5)Insert(10)Delete(8)Insert(12)NearestNeighbors(7)

Answer

Outline

1 Local Search

2 Attempts

Hash TableRangeSearch: Impossible ×

NearestNeighbors: Impossible ×Insert: O(1) XDelete: O(1) X

Hash TableRangeSearch: Impossible ×NearestNeighbors: Impossible ×

Insert: O(1) XDelete: O(1) X

Hash TableRangeSearch: Impossible ×NearestNeighbors: Impossible ×Insert: O(1) X

Delete: O(1) X

Hash TableRangeSearch: Impossible ×NearestNeighbors: Impossible ×Insert: O(1) XDelete: O(1) X

ArrayRangeSearch: O(n) ×

NearestNeighbors: O(n) ×Insert: O(1) XDelete: O(1) X

ArrayRangeSearch: O(n) ×NearestNeighbors: O(n) ×

Insert: O(1) XDelete: O(1) X

ArrayRangeSearch: O(n) ×NearestNeighbors: O(n) ×Insert: O(1) X

Delete: O(1) X

ArrayRangeSearch: O(n) ×NearestNeighbors: O(n) ×Insert: O(1) XDelete: O(1) X

Sorted ArrayRangeSearch: O(log(n)) X

NearestNeighbors: O(log(n)) XInsert: O(n) ×Delete: O(n) ×

Sorted ArrayRangeSearch: O(log(n)) XNearestNeighbors: O(log(n)) X

Insert: O(n) ×Delete: O(n) ×

Sorted ArrayRangeSearch: O(log(n)) XNearestNeighbors: O(log(n)) XInsert: O(n) ×

Delete: O(n) ×

Sorted ArrayRangeSearch: O(log(n)) XNearestNeighbors: O(log(n)) XInsert: O(n) ×Delete: O(n) ×

Linked ListRangeSearch: O(n) ×

NearestNeighbors: O(n) ×Insert: O(1) XDelete: O(1) X

Linked ListRangeSearch: O(n) ×NearestNeighbors: O(n) ×

Insert: O(1) XDelete: O(1) X

Linked ListRangeSearch: O(n) ×NearestNeighbors: O(n) ×Insert: O(1) X

Delete: O(1) X

Linked ListRangeSearch: O(n) ×NearestNeighbors: O(n) ×Insert: O(1) XDelete: O(1) X

Need Something New

ProblemPrevious data structures won’t work. Weneed something new.

top related