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

Trees

The document discusses binary search trees and how they can be used to implement a dictionary data structure. A binary search tree stores dictionary items in nodes of a binary tree, with each node containing an item and its string key. The keys are arranged such that all keys in the left subtree of a node are alphabetically before the node's key, and all keys in the right subtree are alphabetically after. This ordering property allows items to be efficiently retrieved, inserted, and deleted from the dictionary by traversing the tree.

Uploaded by

sai kumar
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)
9 views

Trees

The document discusses binary search trees and how they can be used to implement a dictionary data structure. A binary search tree stores dictionary items in nodes of a binary tree, with each node containing an item and its string key. The keys are arranged such that all keys in the left subtree of a node are alphabetically before the node's key, and all keys in the right subtree are alphabetically after. This ordering property allows items to be efficiently retrieved, inserted, and deleted from the dictionary by traversing the tree.

Uploaded by

sai kumar
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/ 80

Trees

Main and Savitch


Chapter 10
Binary Trees
• A binary tree has nodes, similar to nodes in a
linked list structure.
• Data of one sort or another may be stored at each
node.
• But it is the connections between the nodes which
characterize a binary tree.
A Binary Tree of States

In this example,
the data
contained at
each node is
one of the 50
states.
A Binary Tree of States

Each tree has a


special node
called its root,
usually drawn
at the top.
A Binary Tree of States

Each tree has a


special node
called its root,
usually drawn
at the top. The example tree
has Washington
as its root.
A Binary Tree of States

Each node is
permitted to
have two links
to other nodes,
called the left
child and the
right child.
A Binary Tree of States

Children are
usually drawn
below a node.

The left child of The right child of


Washington is Washington is
Arkansas. Colorado.
A Binary Tree of States

Some nodes
have only one
child.

Arkansas has a
left child, but no
right child.
A Quiz

Some nodes
have only one
child.

Which node has


only a right child?
A Quiz

Some nodes
have only one
child.

Florida has
only a right child.
A Binary Tree of States

A node with no
children is
called a leaf.
A Binary Tree of States

Each node is
called the
parent of its
children.

Washington is the
parent of Arkansas
and Colorado.
A Binary Tree of States

Two rules about parents:

 The root has no


parent.
 Every other node
has exactly one
parent.
A Binary Tree of States

Two nodes with


the same parent
are called
siblings.

Arkansas
and Colorado
are siblings.
Complete Binary Trees
A complete
binary tree is a
special kind of
binary tree
which will be
useful to us.
Complete Binary Trees
A complete
binary tree is a
special kind of
binary tree
which will be
useful to us. When a complete
binary tree is built,
its first node must be
the root.
Complete Binary Trees
The second node of a
complete binary tree
is always the left
child of the root...
Complete Binary Trees
The second node of a
complete binary tree
is always the left
child of the root...
... and the third node
is always the right
child of the root.
Complete Binary Trees
The next
nodes must
always fill
the next level
from left to
right.
Complete Binary Trees
The next
nodes must
always fill
the next level
from left to
right.
Complete Binary Trees
The next
nodes must
always fill
the next level
from left to
right.
Complete Binary Trees
The next
nodes must
always fill
the next level
from left to
right.
Complete Binary Trees
The next
nodes must
always fill
the next level
from left to
right.
Complete Binary Trees
The next
nodes must
always fill
the next level
from left to
right.
Is This Complete?
Is This Complete?
Is This Complete?
Is This Complete?
Is This Complete?
Yes!
It is called the empty tree,
and it has no nodes,
not even a root.
Implementing a Complete Binary
Tree
• We will store the data from the nodes
in a partially-filled array.
3 An integer to keep
track of how many nodes are in the tree

An array of data
We don't care what's in
this part of the array.
Implementing a Complete Binary
Tree
• We will store the date from the nodes
in a partially-filled array.
3 An integer to keep
track of how many nodes are in the tree

Read Section 10.2 to


see details of how
the entries are stored.
An array of data
We don't care what's in
this part of the array.
Depth of Binary Tree

This example, depth = 3


Depth of Binary Tree

This example, depth = 2


Depth of Binary Tree

This example, depth = 0


Depth of Complete Binary Tree
Given a complete binary tree of N nodes,
what is the depth?

D=0
N=1 D=1 D=1
N=3 N=2 D=2 D=2
N=7 N=4
Depth of Complete Binary Tree
Given a complete binary tree of N nodes,
what is the depth?

D=0
N=1 D=1 D=1
N=3 N=2 D=2 D=2
N=7 N=4

D = floor(log N) = O(log N)
Depth of Binary Tree
Given a binary tree of N nodes, what is the
maximum possible depth?

D=0
N=1 D=2
N=3 D=4
N=5

D = O(N)
Summary
• Binary trees contain nodes.
• Each node may have a left child and a right child.
• If you start from any node and move upward, you
will eventually reach the root.
• Every node except the root has one parent. The
root has no parent.
• Complete binary trees require the nodes to fill in
each level from left-to-right before starting the
next level.
Binary Search Trees

• One of the tree applications in


Chapter 10 is binary search trees.
• In Chapter 10, 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

void Dictionary::insert(The key for the new item, The new item);

• The insertion procedure for a


dictionary has two
parameters.

gt o n
ashin
W
The Dictionary Data Type
• When you want to retrieve an
item, you specify the key...

Item Dictionary::retrieve("Washington");
The Dictionary Data Type
 When you want to retrieve an
item, you specify the
key... ... and the retrieval
procedure returns the item.

Item Dictionary::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

F lo
ri d a
The data in the
dictionary will
be stored in a Colorado Oklahoma

binary tree,
with each node Mass.
Arizona
containing an Washington

item and a key.

Hampshire
New

Virginia
West
Arkansas
A Binary Search Tree of States

F lo
ri d a
Storage rules:
1. Every key to the left
Colorado Oklahoma
of a node is
alphabetically before
the key of the node. Arizona Mass.

Washington

Hampshire
New

Virginia
West
Arkansas
A Binary Search Tree of States

F lo
ri d a
Storage rules:
1. Every key to the left
Colorado Oklahoma
of a node is
alphabetically before
the key of the node. Arizona Mass.

Washington
Example:
' Massachusetts' and

Hampshire
' New Hampshire'

New

Virginia
West
are alphabetically Arkansas

before 'Oklahoma'
A Binary Search Tree of States

F lo
ri d a
Storage rules:
1. Every key to the left
Colorado Oklahoma
of a node is
alphabetically before
the key of the node. Arizona Mass.

Washington
2. Every key to the
right of a node is

Hampshire
alphabetically after

New

Virginia
West
Arkansas
the key of the node.
A Binary Search Tree of States

F lo
ri d a
Storage rules:
1. Every key to the left
Colorado Oklahoma
of a node is
alphabetically before
the key of the node. Arizona Mass.

Washington
2. Every key to the
right of a node is

Hampshire
alphabetically after

New

Virginia
West
Arkansas
the key of the node.
Retrieving Data

F lo
ri d a
Start at the root.
1. If the current node has
the key, then stop and Colorado Oklahoma

retrieve the data.


2. If the current node's Mass.

key is too large, move Arizona


Washington
left and repeat 1-3.

Hampshire
3. If the current node's

New
key is too small, move

Virginia
West
Arkansas
right and repeat 1-3.
Retrieve ' New Hampshire'

F lo
ri d a
Start at the root.
1. If the current node has the
key, then stop and
Colorado Oklahoma
retrieve the data.
2. If the current node's key is
too large, move left and Mass.
Arizona
repeat 1-3. Washington

3. If the current node's key is

Hampshire
too small, move right

New
and repeat 1-3.

Virginia
West
Arkansas
Retrieve 'New Hampshire'

F lo
ri d a
Start at the root.
1. If the current node has the
key, then stop and Colorado Oklahoma
retrieve the data.
2. If the current node's key is
too large, move left and Arizona
Mass.

Washington
repeat 1-3.
3. If the current node's key is

Hampshire
too small, move right

New

Virginia
and repeat 1-3.

West
Arkansas
Retrieve 'New Hampshire'

F lo
ri d a
Start at the root.
1. If the current node has the
key, then stop and Colorado Oklahoma
retrieve the data.
2. If the current node's key is
too large, move left and Arizona
Mass.

Washington
repeat 1-3.
3. If the current node's key is

Hampshire
too small, move right

New

Virginia
and repeat 1-3.

West
Arkansas
Retrieve 'New Hampshire'

F lo
ri d a
Start at the root.
1. If the current node has the
key, then stop and Colorado Oklahoma
retrieve the data.
2. If the current node's key is
too large, move left and Arizona
Mass.

Washington
repeat 1-3.
3. If the current node's key is

Hampshire
too small, move right

New

Virginia
and repeat 1-3.

West
Arkansas
Retrieval: Complexity
• Given a complete tree of N items, the depth D =
O(log N).
• What is the maximum number of nodes tested to
retrieve an item from the binary search tree if we
use a complete tree?
• What is the maximum number of nodes tested
(worst case) to retrieve an item from a binary
search tree that is not complete or balanced?
Adding a New Item with a
Given Key

F lo
ri d a
1. Pretend that you are
trying to find the key,
but stop when there is Colorado Oklahoma

no node to move to.


2. Add the new node at Arizona
Mass.

the spot where you Washington

would have moved to

Hampshire
if there had been a

New

Virginia
West
Arkansas
node.
Iowa

Adding

F lo
ri d a
1. Pretend that you are
trying to find the key,
but stop when there is Colorado Oklahoma

no node to move to.


2. Add the new node at Arizona Mass.

the spot where you Washington

would have moved to

Hampshire
if there had been a

New

Virginia
West
Arkansas
node.
Iowa

Adding

F lo
ri d a
1. Pretend that you are
trying to find the key,
but stop when there is Colorado Oklahoma

no node to move to.


2. Add the new node at Arizona Mass.

the spot where you Washington

would have moved to

Hampshire
if there had been a

New

Virginia
West
Arkansas
node.
Iowa

Adding

F lo
ri d a
1. Pretend that you are
trying to find the key,
but stop when there is Colorado Oklahoma

no node to move to.


2. Add the new node at Arizona Mass.

the spot where you Washington

would have moved to

Hampshire
if there had been a

New

Virginia
West
Arkansas
node.
Iowa

Adding

F lo
ri d a
1. Pretend that you are
trying to find the key,
but stop when there is Colorado Oklahoma

no node to move to.


2. Add the new node at Arizona Mass.

the spot where you Washington

would have moved to

Hampshire
if there had been a

New

Virginia
West
Arkansas
node.
Iowa

Adding

F lo
ri d a
1. Pretend that you are
trying to find the key,
but stop when there is Colorado Oklahoma

no node to move to.


2. Add the new node at Arizona Mass.

the spot where you Washington

would have moved to

Hampshire
if there had been a

New

Virginia
West
Arkansas
node.
Adding

F lo
ri d a
1. Pretend that you are
trying to find the key,
but stop when there is Colorado Oklahoma

no node to move to.


2. Add the new node at Arizona Mass.

the spot where you Washington

would have moved to Iowa

Hampshire
if there had been a

New

Virginia
West
Arkansas
node.
Ka
z ak h
st a
n

Adding

F lo
ri d a
Where would you
Oklahoma
add this state? Colorado

Mass.
Arizona
Washington

Iowa

Hampshire
New

Virginia
West
Arkansas
Adding

F lo
ri d a
Kazakhstan is the
new right child Colorado Oklahoma
of Iowa?

Mass.
Arizona
Washington

Iowa

Hampshire
New

Virginia
West
Arkansas
Ka
z ak h
st a
n
Adding: Complexity
• Given a complete tree of N items, the depth D =
O(log N).
• What is the maximum number of nodes tested to
add an item to the binary search tree if we use a
complete tree?
• What is the maximum number of nodes tested
(worst case) to add an item from a binary search
tree that is not complete or balanced?
Removing an Item with a
Given Key

F lo
ri d a
1. Find the item.
2. If necessary, swap the
Colorado Oklahoma
item with one that is
easier to remove.
3. Remove the item. Arizona
Mass.

Washington

Iowa

Hampshire
New

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'

F lo
ri d a
1. Find the item.

Colorado Oklahoma

Mass.
Arizona
Washington

Iowa

Hampshire
New

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'

F lo
ri d a
Colorado Oklahoma

Mass.
Arizona
Washington
Florida cannot be
removed at the Iowa

Hampshire
moment...

New

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'

Colorado Oklahoma

Mass.
Arizona
... because removing Washington

Florida would Iowa

Hampshire
break the tree into

New
two pieces.

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'

F lo
ri d a
1. If necessary, do some
rearranging.
Colorado Oklahoma

Mass.
Arizona
The problem of Washington

breaking the tree Iowa

Hampshire
happens because

New
Florida has 2 children.

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'

F lo
ri d a
If necessary, do some
rearranging.
Colorado Oklahoma

Mass.
Arizona
Washington
For the rearranging,
take the smallest item Iowa

Hampshire
in the right subtree...

New

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'
Iowa

If necessary, do some
rearranging.
Colorado Oklahoma

Mass.
Arizona
Washington
...copy that smallest
item onto the item Iowa

Hampshire
that we're removing...

New

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'
Iowa

If necessary, do some
rearranging.
Colorado Oklahoma

Mass.
Arizona
Washington
... and then remove
the extra copy of the

Hampshire
item we copied...

New

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'
Iowa

If necessary, do some
rearranging.
Colorado Oklahoma

Mass.
Arizona
Washington
Ka
... and reconnect za kh
st an

Hampshire
the tree

New

Virginia
West
Arkansas
Removing 'Florida'

F lo
ri d a
Colorado Oklahoma

Mass.
Arizona
Why did we choose Washington

the smallest item

Hampshire
in the right subtree?

New

Virginia
West
Arkansas
Ka
za kh
st a
n
Removing 'Florida'
Iowa

Colorado Oklahoma

Mass.
Arizona
Washington
Because every key Ka
za
must be smaller than kh
st an

Hampshire
the keys in its

New

Virginia
right subtree

West
Arkansas
Removing an Item with a
Given Key
1. Find the item.
2. If the item has a right child, rearrange the tree:
1. Find smallest item in the right subtree
2. Copy that smallest item onto the one that you
want to remove
3. Remove the extra copy of the smallest item
(making sure that you keep the tree connected)
3. 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 you'll see later, it is possible for the
quickness to fail in some cases -- can you see
why?

You might also like