0% found this document useful (0 votes)
24 views

Java 09 B

Siwarex_CS_Manual_en
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

Java 09 B

Siwarex_CS_Manual_en
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 41

Binary Search Trees

Data Structures
and Other Objects
Using Java

One of the tree applications in


Chapter 9 is binary search trees.
In Chapter 9, binary search trees
are used to implement bags and
sets.
This presentation illustrates how
another data type called a
dictionary is implemented with
binary search trees.

The Dictionary Data Type

A dictionary is a collection
of items, similar to a bag.
But unlike a bag, each item
has a string attached to it,
called the item's key.

The Dictionary Data Type

A dictionary is a collection
of items, similar to a bag.
But unlike a bag, each item
has a string attached to it,
called the item's key.

Example:
The items I am
storing are records
containing data
about a state.

The Dictionary Data Type

A dictionary is a collection
of items, similar to a bag.
But unlike a bag, each item
has a string attached to it,
called the item's key.

Example:
The key for each
record is the name
of the state.

Washington

The Dictionary Data Type


public void insert(The key for the new item, The new item)

The insertion method for a


dictionary has two
parameters.

The Dictionary Data Type

When you want to retrieve an


item, you specify the key...

public Object retrieve("Washington")

The Dictionary Data Type

When you want to retrieve an


item, you specify the key...
... and the retrieval method
returns the item.

public Object retrieve("Washington")

The Dictionary Data Type

We"ll look at how a binary


tree can be used as the
internal storage mechanism
for the dictionary.

A Binary Search Tree of States

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

The data in the


dictionary will
be stored in a
binary tree,
with each node
containing an
item and a key.

A Binary Search Tree of States

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Storage rules:
Every key to the left
of a node is
alphabetically before
the key of the node.

A Binary Search Tree of States

Mass.

Washington

Arkansas

West
Virginia

Example:
" Massachusetts" and
" New Hampshire"
are alphabetically
before "Oklahoma"

Oklahoma

New
Hampshire

Storage rules:
Every key to the left of
Colorado
a node is
alphabetically before
the key of the node. Arizona

A Binary Search Tree of States

Oklahoma

Mass.

West
Virginia

Washington
New
Hampshire

Storage rules:
Every key to the left of
Colorado
a node is
alphabetically before
the key of the node. Arizona
Every key to the
right of a node is
alphabetically after
Arkansas
the key of the node.

A Binary Search Tree of States

Oklahoma

Mass.

West
Virginia

Washington
New
Hampshire

Storage rules:
Every key to the left of
Colorado
a node is
alphabetically before
the key of the node. Arizona
Every key to the
right of a node is
alphabetically after
Arkansas
the key of the node.

Retrieving Data

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Start at the root.


If the current node has
the key, then stop and
retrieve the data.
If the current node's
key is too large, move
left and repeat 1-3.
If the current node's
key is too small, move
right and repeat 1-3.

Retrieve " New Hampshire"

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Start at the root.


If the current node has
the key, then stop and
retrieve the data.
If the current node's
key is too large, move
left and repeat 1-3.
If the current node's
key is too small, move
right and repeat 1-3.

Retrieve "New Hampshire"

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Start at the root.


If the current node has
the key, then stop and
retrieve the data.
If the current node's
key is too large, move
left and repeat 1-3.
If the current node's
key is too small, move
right and repeat 1-3.

Retrieve "New Hampshire"

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Start at the root.


If the current node has
the key, then stop and
retrieve the data.
If the current node's
key is too large, move
left and repeat 1-3.
If the current node's
key is too small, move
right and repeat 1-3.

Retrieve "New Hampshire"

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Start at the root.


If the current node has
the key, then stop and
retrieve the data.
If the current node's
key is too large, move
left and repeat 1-3.
If the current node's
key is too small, move
right and repeat 1-3.

Adding a New Item with a


Given Key
Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Pretend that you are


trying to find the key,
but stop when there is
no node to move to.
Add the new node at
the spot where you
would have moved to
if there had been a
node.

Oklahoma

Colorado

Mass.

Arizona

Washington

Arkansas

West
Virginia

Pretend that you are


trying to find the key,
but stop when there is
no node to move to.
Add the new node at
the spot where you
would have moved to
if there had been a
node.

New
Hampshire

Adding

Iowa

Oklahoma

Colorado

Mass.

Arizona

Washington

Arkansas

West
Virginia

Pretend that you are


trying to find the key,
but stop when there is
no node to move to.
Add the new node at
the spot where you
would have moved to
if there had been a
node.

New
Hampshire

Adding

Iowa

Oklahoma

Colorado

Mass.

Arizona

Washington

Arkansas

West
Virginia

Pretend that you are


trying to find the key,
but stop when there is
no node to move to.
Add the new node at
the spot where you
would have moved to
if there had been a
node.

New
Hampshire

Adding

Iowa

Oklahoma

Colorado

Mass.

Arizona

Washington

Arkansas

West
Virginia

Pretend that you are


trying to find the key,
but stop when there is
no node to move to.
Add the new node at
the spot where you
would have moved to
if there had been a
node.

New
Hampshire

Adding

Iowa

Oklahoma

Colorado

Mass.

Arizona

Washington

Arkansas

West
Virginia

Pretend that you are


trying to find the key,
but stop when there is
no node to move to.
Add the new node at
the spot where you
would have moved to
if there had been a
node.

New
Hampshire

Adding

Iowa

Adding

Oklahoma

Colorado

Mass.

Arizona

Iowa

Arkansas

West
Virginia

Washington
New
Hampshire

Pretend that you are


trying to find the key,
but stop when there is
no node to move to.
Add the new node at
the spot where you
would have moved to
if there had been a
node.

Adding

Oklahoma

Colorado

Mass.

Arizona

Iowa

Arkansas

West
Virginia

Washington
New
Hampshire

Where would you


add this state?

Adding

Oklahoma

Colorado

Mass.

Arizona

Iowa

Arkansas

West
Virginia

Washington
New
Hampshire

Kazakhstan is the
new right child
of Iowa?

Removing an Item with a


Given Key
Oklahoma

Colorado

Mass.

Arizona

Iowa

Arkansas

West
Virginia

Washington
New
Hampshire

Find the item.


If necessary, swap the
item with one that is
easier to remove.
Remove the item.

Removing "Florida"
Find the item.
Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Iowa

New
Hampshire

Washington

Removing "Florida"

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Iowa

New
Hampshire

Florida cannot be
removed at the
moment...

Washington

Removing "Florida"

Oklahoma

Colorado

Mass.

Iowa

Arkansas

West
Virginia

Washington
New
Hampshire

... because removing


Florida would
break the tree into
two pieces.

Arizona

Removing "Florida"
If necessary, do some
rearranging.
Oklahoma

Colorado

Mass.

Iowa

Arkansas

West
Virginia

Washington
New
Hampshire

The problem of
breaking the tree
happens because
Florida has 2 children.

Arizona

Removing "Florida"
If necessary, do some
rearranging.
Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Iowa

New
Hampshire

For the rearranging,


take the smallest item
in the right subtree...

Washington

Removing "Florida"
Iowa

If necessary, do some
rearranging.
Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Iowa

New
Hampshire

...copy that smallest


item onto the item
that we"re removing...

Washington

Removing "Florida"
Iowa

If necessary, do some
rearranging.
Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

New
Hampshire

... and then remove


the extra copy of the
item we copied...

Washington

Removing "Florida"
Iowa

If necessary, do some
rearranging.
Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

New
Hampshire

... and reconnect


the tree

Washington

Removing "Florida"

Oklahoma

Colorado

Mass.

Arkansas

West
Virginia

Washington
New
Hampshire

Why did I choose


the smallest item
in the right subtree?

Arizona

Removing "Florida"
Iowa

Oklahoma

Colorado

Mass.

Arizona

Arkansas

West
Virginia

Washington
New
Hampshire

Because every key


must be smaller than
the keys in its
right subtree

Removing an Item with a


Given Key
Find the item.
If the item has a right child, rearrange the tree:

Find smallest item in the right subtree


Copy that smallest item onto the one that you
want to remove
Remove the extra copy of the smallest item
(making sure that you keep the tree connected)

else just remove the item.

Summary

Binary search trees are a good implementation of


data types such as sets, bags, and dictionaries.
Searching for an item is generally quick since you
move from the root to the item, without looking at
many other items.
Adding and deleting items is also quick.
But as youll see later, it is possible for the
quickness to fail in some cases -- can you see
why?

Presentation copyright 1999 Addison Wesley Longman,


For use with Data Structures and Other Objects Using Java
by Michael Main.
Some artwork in the presentation is used with permission from Presentation Task Force
(copyright New Vision Technologies Inc) and Corel Gallery Clipart Catalog (copyright
Corel Corporation, 3G Graphics Inc, Archive Arts, Cartesia Software, Image Club
Graphics Inc, One Mile Up Inc, TechPool Studios, Totem Graphics Inc).
Students and instructors who use Data Structures and Other Objects Using Java are welcome
to use this presentation however they see fit, so long as this copyright notice remains
intact.

THE END

You might also like