You are on page 1of 136

Data Structures and Algorithms

Objectives
In this session, you will learn to:
Store data in a tree
Implement a binary tree
Implement a binary search tree

Ver. 1.0

Session 13

Data Structures and Algorithms


Storing Data in a Tree
Directory structure
Consider
a scenario where you are required to represent
the directory structure of your operating system.
The directory structure contains various folders and files. A
folder may further contain any number of sub folders and
files.
In such a case, it is not possible to represent the structure
linearly because all the items have a hierarchical
relationship among themselves.
In such a case, it would be good if you have a data structure
that enables you to store your data in a nonlinear fashion.

Ver. 1.0

Session 13

Data Structures and Algorithms


Defining Trees
A tree are
is a used
nonlinear
data structure
that represent
Trees
in applications
in which
the relationa between
hierarchical
relationship
among
the various
elements.
data
elements
needs to be
represented
in adata
hierarchy.

A
C

J
L

Ver. 1.0

Session 13

Data Structures and Algorithms


Defining Trees (Contd.)
Eachtopmost
The
elementnode
in a tree
in a tree
is referred
is called
to root.
as a node.
root
A
C

J
L

Ver. 1.0

node

Session 13

Data Structures and Algorithms


Defining Trees (Contd.)
Each node in a tree can further have subtrees below its
hierarchy.
root
A
C

J
L

Ver. 1.0

node

Session 13

Data Structures and Algorithms


Tree Terminology
Leafusnode:
It refers
to aterms
nodethat
withare
nomost
children.
Let
discuss
various
frequently used
with trees.

A
C

Nodes E, F, G, H, I, J,
L, and M are leaf nodes.

J
L

Ver. 1.0

Session 13

Data Structures and Algorithms


Tree Terminology (Contd.)
Subtree: A
of The
a tree,
which
can
be viewed
a are
Children
ofportion
a node:
roots
of the
subtrees
of aas
node
separate
in itself
is called
called
thetree
children
of the
node.a subtree.
A subtree can also contain just one node called the leaf node.
A
C

E, F, with
G, and
are
Tree
rootHB,
children of nodes
node B.
containing
E,BF,
is the
these of
G,
andparent
H is aof
subtree
nodes.
node
A.

J
L

Ver. 1.0

Session 13

Data Structures and Algorithms


Tree Terminology (Contd.)
DegreeA of
node:
It refers
number
Edge:
linka from
the
parentto
tothe
a child
nodeofissubtrees
referred of
to aas
node
in a tree.
an
edge.

A
C

Degree of node C is 1
Degree of node D is 2
Degree of node A is 3
Degree of node B is 4

Edge
E

J
L

Ver. 1.0

Session 13

Data Structures and Algorithms


Tree Terminology (Contd.)
Siblings/Brothers: It refers to the children of the same
node.

A
C

Nodes B, C, and D are


siblings of each other.
Nodes E, F, G, and H are
siblings of each other.

J
L

Ver. 1.0

Session 13

Data Structures and Algorithms


Tree Terminology (Contd.)
Internal
It refers
to to
any
between
the rootofand a
Level
of node:
a node:
It refers
thenode
distance
(in number
leaf node.
nodes)
of a node from the root. Root always lies at level 0.
As you move down the tree, the level increases by one.
Level 0

A
C

Nodes B, C, D, and K
are internal nodes. Level 1

J
L

Ver. 1.0

Level 2

Level 3

Session 13

Data Structures and Algorithms


Tree Terminology (Contd.)
Depth of a tree: Refers to the total number of levels in the
tree.
The depth of the following tree is 4.
Level 0

A
C

Level 1

J
L

Ver. 1.0

Level 2

Level 3

Session 13

Data Structures and Algorithms


Just a minute
Consider the following tree and answer the questions that
follow:
a.
b.
c.
d.
e.
f.
g.

What is the depth of the tree?


Which nodes are children of node B?
Which node is the parent of node F?
What is the level of node E?
Which nodes are the siblings of node H?
Which nodes are the siblings of node D?
Which nodes are leaf nodes?

D
H

Ver. 1.0

root

C
E

Session 13

Data Structures and Algorithms


Just a minute
Answer:
a.
b.
c.
d.
e.
f.
g.

Ver. 1.0

4
D and E
C
2
H does not have any siblings
The only sibling of D is E
F, G, H, and I

Session 13

Data Structures and Algorithms


Defining Binary Trees
Binary
is atree:
specific type of tree in which each node can
Strictly tree
binary
have
at most
two
children
namely
child
rightnodes,
child.
A binary
tree
in which
every
node, left
except
forand
the leaf
hasare
non-empty
and of
right
children.
There
variousleft
types
binary
trees:
Strictly binary tree
Full binary tree
Complete binary tree

Ver. 1.0

Session 13

Data Structures and Algorithms


Defining Binary Trees (Contd.)
Full binary tree:
d

A binary tree of depth d that contains exactly 2 1


nodes.
A

Ver. 1.0

Depth = 3
Total number of
3
nodes = 2 1 = 7

Session 13

Data Structures and Algorithms


Defining Binary Trees (Contd.)
Complete binary tree:
A binary tree with n nodes and depth d whose nodes
correspond to the nodes numbered from 0 to n 1 in the full
binary tree of depth k.
0

1
3

B
4

Full Binary Tree

Ver. 1.0

C
3

B
4

C
3

Complete Binary Tree

B
4

C
5

Incomplete Binary Tree

Session 13

Data Structures and Algorithms


Representing a Binary Tree
Array representation of binary trees:
All the nodes are represented as the

0
A

3
D

C
4
E

Binary Tree
Ver. 1.0

[0]

[1]

[2]

[3]

[4]

[5]

[6]

If there are n nodes in a binary


tree, then for
with index
elements
of any
an node
array.
i, where 0 < i < n 1:
Parent of i is at (i 1)/2.
Left child of i is at 2i + 1:
If 2i + 1 > n 1, then
the node does not
have a left child.
Right child of i is at 2i + 2:
If 2i + 2 > n 1, then
the node does have a
right child.

Array Representation
Session 13

Data Structures and Algorithms


Representing a Binary Tree (Contd.)
Linked representation of a binary tree:
It uses a linked list to implement a binary tree.
Each node in the linked representation holds the following
information:
Data
Reference to the left child
Reference to the right child

If a node does not have a left child or a right child or both, the
respective left or right child fields of that node point to NULL.

Data
Node
Ver. 1.0

Session 13

Data Structures and Algorithms


Representing a Binary Tree (Contd.)
root

root

52

36

24

68

59
70

Binary Tree

Ver. 1.0

24

72
80

52

.
.

36

68

.
.

59

72

70

80

Linked Representation

Session 13

Data Structures and Algorithms


Traversing a Binary Tree
You can implement various operations on a binary tree.
A common operation on a binary tree is traversal.
Traversal refers to the process of visiting all the nodes of a
binary tree once.
There are three ways for traversing a binary tree:
Inorder traversal
Preorder traversal
Postorder traversal

Ver. 1.0

Session 13

Data Structures and Algorithms


Inorder Traversal
Steps for traversing a tree in inorder sequence are as
follows:
1. Traverse the left subtree
2. Visit root
3. Traverse the right subtree

Let us consider an example.

Ver. 1.0

Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
B is
is not
not NULL.
NULL.
The left subtree of node A
D to traverse the left
Therefore, move to node B
B.
subtree of A.
root
A

Ver. 1.0

Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
The left subtree of node D is NULL.
Therefore, visit node D.
root
A

D
Ver. 1.0

Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of D is not NULL
Therefore, move to the right subtree of node D
root
A

D
Ver. 1.0

Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Left subtree of H is empty.
Therefore, visit node H.
root
A

D
Ver. 1.0

H
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of H is empty.
Therefore, move to node B.
root
A

D
Ver. 1.0

H
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
The left subtree of B has been visited.
Therefore, visit node B.
root
A

D
Ver. 1.0

B
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of B is not empty.
Therefore, move to the right subtree of B.
root
A

D
Ver. 1.0

B
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Left subtree of E is empty.
Therefore, visit node E.
root
A

D
Ver. 1.0

E
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of E is empty.
Therefore, move to node A.
root
A

D
Ver. 1.0

E
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Left subtree of A has been visited.
Therefore, visit node A.
root
A

D
Ver. 1.0

A
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of A is not empty.
Therefore, move to the right subtree of A.
root
A

D
Ver. 1.0

A
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Left subtree of C is not empty.
Therefore, move to the left subtree of C.
root
A

D
Ver. 1.0

A
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Left subtree of F is empty.
Therefore, visit node F.
root
A

D
Ver. 1.0

F
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of F is empty.
Therefore, move to node C.
root
A

D
Ver. 1.0

F
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
The left subtree of node C has been visited.
Therefore, visit node C.
root
A

D
Ver. 1.0

C
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of C is not empty.
Therefore, move to the right subtree of node C.
root
A

D
Ver. 1.0

C
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Left subtree of G is not empty.
Therefore, move to the left subtree of node G.
root
A

D
Ver. 1.0

C
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Left subtree of I is empty.
Therefore, visit I.
root
A

D
Ver. 1.0

I
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of I is empty.
Therefore, move to node G.
root
A

D
Ver. 1.0

I
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Visit node G.
root
A

D
Ver. 1.0

G
Session 13

Data Structures and Algorithms


Inorder Traversal (Contd.)
Right subtree of G is empty.
root
A

D
Ver. 1.0

Traversal complete

G
Session 13

Data Structures and Algorithms


Preorder Traversal
Steps for traversing a tree in preorder sequence are as
follows:
1. Visit root
2. Traverse the left subtree
3. Traverse the right subtree

Ver. 1.0

Session 13

Data Structures and Algorithms


Preorder Traversal (Contd.)
Perform the preorder traversal of the following tree.
A

Preorder Traversal:

Ver. 1.0

A B D H E

C F

Session 13

Data Structures and Algorithms


Postorder Traversal
Steps for traversing a tree in postorder sequence are as
follows:
1. Traverse the left subtree
2. Traverse the right subtree
3. Visit the root

Ver. 1.0

Session 13

Data Structures and Algorithms


Postorder Traversal (Contd.)
Perform the postorder traversal of the following tree.
A

Postorder Traversal: H D E

Ver. 1.0

B F

G C A

Session 13

Data Structures and Algorithms


Just a minute
In _________ traversal method, root is processed before
traversing the left and right subtrees.

Answer:
Preorder

Ver. 1.0

Session 13

Data Structures and Algorithms


Implementing a Binary Search Tree
Consider a scenario. SysCall Ltd. is a cellular phone
company with millions of customers spread across the
world. Each customer is assigned a unique identification
number (id). Individual customer records can be accessed
by referring to the respective id. These ids need to be stored
in a sorted manner in such a way so that you can perform
various transactions, such as retrieval, insertion, and
deletion, easily.

Ver. 1.0

Session 13

Data Structures and Algorithms


Implementing a Binary Search Tree (Contd.)
Which datayou
structure
willimplement
you use toa store
the id of the
Therefore,
need to
data structure
that
customers?
provides
the advantages of both arrays as well as linked
lists.Can you implement an array?
operation
in an array is
fast.
A binarySearch
search
tree combines
the
advantages of both
However,
insertion
arrays and
linked
lists. and deletion in an array is complex in nature.
In this case, the total number of customer ids to be stored is very
large. Therefore, insertion and deletion will be very time
consuming.

Can you implement a linked list?


Insert and delete operation in a linked is fast.
However, linked lists allow only sequential search.
If you need to access a particular customer id, which is located
near the end of the list, then it would require you to visit all the
preceding nodes, which again can be very time consuming.

Ver. 1.0

Session 13

Data Structures and Algorithms


Defining a Binary Search Tree
The
following
an is
example
a binary
search
tree.
Binary
search istree
a binaryoftree
in which
every
node
satisfies the following conditions:
All values in the left subtree of a node are less than the value
52
of the node.
All values in the right subtree of a node are greater than the
value of the
36 node.
68

24

44

40

Ver. 1.0

59

72

55

Session 13

Data Structures and Algorithms


Defining a Binary Search Tree (Contd.)
You can implement various operations on a binary search
tree:
Traversal
Search
Insert
Delete

Ver. 1.0

Session 13

Data Structures and Algorithms


Searching a Node in a Binary Search Tree
Search
operation
refers value,
to the you
process
for a
To
search
for a specific
needoftosearching
perform the
specified steps:
value in the tree.
following
1. Make currentNode point to the root node
2. If currentNode is null:
a.
b.

Display Not Found


Exit

3. Compare the value to be searched with the value of currentNode.


Depending on the result of the comparison, there can be three
possibilities:
a.

If the value is equal to the value of currentNode:


i.
ii.

b.

If the value is less than the value of currentNode:


i.
ii.

c.

Make currentNode point to its left child


Go to step 2

If the value is greater than the value of currentNode:


i.
ii.

Ver. 1.0

Display Found
Exit

Make currentNode point to its right child


Go to step 2

Session 13

Data Structures and Algorithms


Just a minute
In a binary search tree, all the values in the left subtree of a
node are _______ than the value of the node.

Answer:
smaller

Ver. 1.0

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
Beforeaninserting
a node
in a the
binary
search
you
firstto be
Write
algorithm
to locate
position
of tree,
a new
node
need to check
whether
the tree
inserted
in a binary
search
tree.is empty or not.
If the tree is empty, make the new node as root.
If the tree is not empty, you need to locate the appropriate
position for the new node to be inserted.
This requires you to locate the parent of the new node to be
inserted.
Once the parent is located, the new node is inserted as the
left child or right child of the parent.
To locate the parent of the new node to be inserted, you
need to implement a search operation in the tree.

Ver. 1.0

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Algorithm to locate the
parent of the new node to
be inserted.
root

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Refer to the algorithm to
of the
new node to be inserted.

Locate the position of a new node


locate the parent
55.

root

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root
currentNode

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

parent = NULL
currentNode

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

parent = NULL
currentNode

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

parent
parent= NULL
currentNode

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:

55 > 52
root

parent
currentNode

52

a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:

55 > 52
root

parent
currentNode

52

a.

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:

55 > 52
root

parent
currentNode

52

a.

currentNode

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

parent

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

currentNode

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

parent

52

.
.

36

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

currentNode

parent

1.

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

55 < 68
root

52

.
.

36

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

currentNode

parent

1.

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

.
Ver. 1.0

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

55 < 68
root

52

.
.

36

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

currentNode

parent

1.

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

72

Make currentNode point to its left child

Make currentNode point to its right child

currentNode

.
Ver. 1.0

70

80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

parent

36

68

6.

If the value of the new node is greater than that


of currentNode:
a.

24

59

72

Make currentNode point to its left child

Make currentNode point to its right child

currentNode

.
Ver. 1.0

70

80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

parent

36

68

6.

parent
24

If the value of the new node is greater than that


of currentNode:
a.

59

72

Make currentNode point to its left child

Make currentNode point to its right child

currentNode

.
Ver. 1.0

70

80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:

55 < 59
root

52

a.

36

68

6.

parent
24

If the value of the new node is greater than that


of currentNode:
a.

59

72

Make currentNode point to its left child

Make currentNode point to its right child

currentNode

.
Ver. 1.0

70

80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:

55 < 59
root

52

a.

36

68

6.

parent
24

currentNode
currentNode = NULL

Ver. 1.0

If the value of the new node is greater than that


of currentNode:
a.

59

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Locate the position of a new node
55.

root

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

parent
24

currentNode = NULL

Ver. 1.0

If the value of the new node is greater than that


of currentNode:
a.

59

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Once the parent of the new
node is located, you can
insert the node as the child
of its parent.
root

52

1.

Mark the root node as currentNode

2.

Make parent point to NULL

3.

Repeat steps 4, 5, and 6 until currentNode


becomes NULL

4.

Make parent point to currentNode

5.

If the value of the new node is less than that of


currentNode:
a.

36

68

6.

parent
24

currentNode = NULL

Ver. 1.0

If the value of the new node is greater than that


of currentNode:
a.

59

70

72

Make currentNode point to its left child

Make currentNode point to its right child

.
80

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
Write an algorithm to insert a node in a binary search tree.

Ver. 1.0

Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.
Insert 55 to insert a node
Algorithm
in a binary search tree.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

If the value in the data field of new node is


less than that of parent:
a.

24

59

72

b.
7.

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

If the value in the data field of new node is


less than that of parent:
a.

24

59

72

b.
7.

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

If the value in the data field of new node is


less than that of parent:
a.

24

59

72

b.
7.

55

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

If the value in the data field of new node is


less than that of parent:
a.

24

59

72

b.
7.

55

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

parent
24

72

b.
7.

55

If the value in the data field of new node is


less than that of parent:
a.

59

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

parent
24

72

b.
7.

55

If the value in the data field of new node is


less than that of parent:
a.

59

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

parent
24

72

b.
7.

55

If the value in the data field of new node is


less than that of parent:
a.

59

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

parent

24

72

b.
7.

55

If the value in the data field of new node is


less than that of parent:
a.

59

70

80

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Ver. 1.0

Mark the new node as ROOT


Exit

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Inserting Nodes in a Binary Search Tree
(Contd.)
1.
Allocate memory for the new node.

root

.
.

52

2.

Assign value to the data field of new node.

3.

Make the left and right child of the new node


point to NULL.

4.

Locate the node which will be the parent of


the node to be inserted. Mark it as parent.

5.

If parent is NULL (Tree is empty):

a.
b.

36

68

6.

parent
24

72

b.
7.

55

70

Insert operation complete


Ver. 1.0

If the value in the data field of new node is


less than that of parent:
a.

59

80

Mark the new node as ROOT


Exit

Make the left child of parent point to


the new node
Exit

If the value in the data field of the new node


is greater than that of the parent:
a.
b.

Make the right child of parent point to


the new node
Exit
Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
Deletean
operation
a locate
binary the
search
tree refers
to theto
Write
algorithminto
position
of the node
process from
of deleting
thesearch
specified
deleted
a binary
tree.node from the tree.
Before implementing a delete operation, you first need to
locate the position of the node to be deleted and its parent.
To locate the position of the node to be deleted and its
parent, you need to implement a search operation.

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose
Algorithmyou
to locate
want to
thedelete
node
node
to be 70
deleted.
root

.
.
24

52

.
.

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root
currentNode

.
24

52

.
.

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root
currentNode
parent = NULL

.
24

52

.
.

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root
currentNode
parent = NULL

.
24

52

.
.

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root
currentNode
parent = NULL

.
24

52

parent

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root
currentNode

.
24

52

parent

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

70 > 52

59

1.

72

i.
c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root
currentNode

.
24

52

parent

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

70 > 52

59

1.

72

i.
c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root
currentNode

52

parent
currentNode

.
24

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

70 > 52

59

1.

72

i.
c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

52

parent
currentNode

.
24

36

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

52

parent
currentNode

.
24

36

parent

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

52

70 > 68

currentNode

.
24

36

parent

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

52

70 > 68

currentNode

.
24

36

parent

68

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

59

1.

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

52

70 > 68

currentNode

36

parent

68

1.

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

currentNode
24

59

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

.
.

36

52

parent

68

1.

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

currentNode
24

59

72

c.

If the value to be deleted is greater


than that of currentNode:
i.

70

80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

.
.

36

52

parent

68

1.

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

currentNode
24

59

72

c.

70

If the value to be deleted is greater


than that of currentNode:
i.

parent
80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

.
.

52

70 < 72

36

68

1.

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

currentNode
24

59

72

c.

70

If the value to be deleted is greater


than that of currentNode:
i.

parent
80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

.
.

52

70 < 72

36

68

1.

Make a variable/pointer currentNode point to


the ROOT node.

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:

i.

currentNode
24

59

72

c.

70

If the value to be deleted is greater


than that of currentNode:
i.

parent
80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

currentNode
69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Suppose you want to delete
node 70
root

.
.

52

.
.

36

24

68

2.

Make a variable/pointer parent point to NULL.

3.

Repeat steps a, b, and c until currentNode


becomes NULL or the value of the node to be
searched becomes equal to that of
currentNode:
a.

Make parent point to currentNode.

b.

If the value to be deleted is less than


that of currentNode:
i.

.
.

Make a variable/pointer currentNode point to


the ROOT node.

59

Nodes located

1.

72

c.

70

If the value to be deleted is greater


than that of currentNode:
i.

parent
80

Make currentNode point to its


left child.

Make currentNode point to its


right child.

currentNode
69
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Once the nodes are located, there can be three cases:
Case I: Node to be deleted is the leaf node
Case II: Node to be deleted has one child (left or right)
Case III: Node to be deleted has two children

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Write an algorithm to delete a leaf node from a binary
search tree.

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node
Algorithm
to delete
69
a leaf
node from the binary tree.

52

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode is the root node: // If parent is


// NULL
a.
b.

.
3.

36

68

If currentNode is left child of parent:


a.
b.

24

59

72

4.

70

b.

80
5.

Make left child field of parent point to


NULL.
Go to step 5.

If currentNode is right child of parent:


a.

Make ROOT point to NULL.


Go to step 5.

Make right child field of parent point to


NULL.
Go to step 5.

Release the memory for currentNode.

69

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node 69

52

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode is the root node: // If parent is


// NULL
a.
b.

.
3.

36

68

If currentNode is left child of parent:


a.
b.

24

59

72

4.

70

b.

80
5.

69

Make left child field of parent point to


NULL.
Go to step 5.

If currentNode is right child of parent:


a.

Make ROOT point to NULL.


Go to step 5.

Make right child field of parent point to


NULL.
Go to step 5.

Release the memory for currentNode.

parent

currentNode
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node 69

52

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode is the root node: // If parent is


// NULL
a.
b.

.
3.

36

68

If currentNode is left child of parent:


a.
b.

24

59

72

4.

70

b.

80
5.

69

Make left child field of parent point to


NULL.
Go to step 5.

If currentNode is right child of parent:


a.

Make ROOT point to NULL.


Go to step 5.

Make right child field of parent point to


NULL.
Go to step 5.

Release the memory for currentNode.

parent

currentNode
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node 69

52

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode is the root node: // If parent is


// NULL
a.
b.

.
3.

36

68

If currentNode is left child of parent:


a.
b.

24

59

72

4.

70

b.

80
5.

69

Make left child field of parent point to


NULL.
Go to step 5.

If currentNode is right child of parent:


a.

Make ROOT point to NULL.


Go to step 5.

Make right child field of parent point to


NULL.
Go to step 5.

Release the memory for currentNode.

parent

currentNode
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node 69

52

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode is the root node: // If parent is


// NULL
a.
b.

.
3.

36

68

If currentNode is left child of parent:


a.
b.

24

59

72

4.

70

b.

80
5.

69

Make left child field of parent point to


NULL.
Go to step 5.

If currentNode is right child of parent:


a.

Make ROOT point to NULL.


Go to step 5.

Make right child field of parent point to


NULL.
Go to step 5.

Release the memory for currentNode.

parent

currentNode
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node 69

52

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode is the root node: // If parent is


// NULL
a.
b.

.
3.

36

68

If currentNode is left child of parent:


a.
b.

24

59

72

4.

70

b.

80
5.

69

Make left child field of parent point to


NULL.
Go to step 5.

If currentNode is right child of parent:


a.

Make ROOT point to NULL.


Go to step 5.

Make right child field of parent point to


NULL.
Go to step 5.

Release the memory for currentNode.

parent

currentNode
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node 69

52

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode is the root node: // If parent is


// NULL
a.
b.

.
3.

36

68

If currentNode is left child of parent:


a.
b.

24

59

72

4.

70

b.

80
5.

69

Make left child field of parent point to


NULL.
Go to step 5.

If currentNode is right child of parent:


a.

Make ROOT point to NULL.


Go to step 5.

Make right child field of parent point to


NULL.
Go to step 5.

Release the memory for currentNode.

parent

Delete operation complete


currentNode
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Write an algorithm to delete a node, which has one child
from a binary search tree.

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Algorithm
to delete
a node
Delete
node
80
with one child.

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

5.

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

root

.
.
24

52

.
.

36

68

.
.

59

72

.
.

70

80

75

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75

Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75

Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75
child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75
child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75
child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75
child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75
child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75
child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75
child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

If currentNode has a left child:


a.
Mark the left child of currentNode as
child.
b.
Go to step 4.

3.

If currentNode has a right child:


a.
Mark the right child of currentNode as
child.
b.
Go to step 4.

4.

If currentNode is the root node:


a.
Mark child as root.
b.
Go to step 7.

Delete node 80
root

.
.

52

.
.

36

68

.
parent

24

59

72

.
currentNode 5.

70

80
6.

If currentNode is the right child of parent:


a.
Make right child field of parent point to
child.
b.
Go to step 7.

7.

Release the memory of currentNode.

75

Delete operation complete


child
Ver. 1.0

If currentNode is the left child of parent:


a.
Make left child field of parent point to
child.
b.
Go to step 7.

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Write an algorithm to delete a node, which has two children
from a binary search tree.

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
Delete node
72
Algorithm
to delete
a node
with two children.

1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

root

.
.
24

52

.
.

36

68

.
.

59

72

70

75

Ver. 1.0

.
80

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72
root

52

.
parent

36

68

.
currentNode

24

59

72

70

75

Ver. 1.0

.
80

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72
root

52

.
parent

36

68

.
currentNode

24

59

72

70

75

Ver. 1.0

.
80

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72
root

52

.
parent

36

68

.
currentNode

24

59

72

.
.

70

80

Inorder_suc
75

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72
root

52

.
parent

36

68

.
currentNode

24

59

72

.
.

70

80

Inorder_suc
75

Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72
root

52

.
parent

36

68

.
currentNode

24

59

72

.
.

70

80

Inorder_suc
75
Inorder_suc
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72
root

52

.
parent

36

68

.
currentNode

24

59

72
75

.
.

70

80

75
Inorder_suc
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72
root

52

.
parent

36

68

.
currentNode

24

59

75

.
.

70

80

75
Inorder_suc
Ver. 1.0

Session 13

Data Structures and Algorithms


Deleting Nodes from a Binary Search Tree
(Contd.)
1.

Locate the node to be deleted. Mark it as


currentNode and its parent as parent.

2.

Locate the inorder successor of currentNode.


Mark it as Inorder_suc. Execute the following
steps to locate Inorder_suc:
a.
Mark the right child of currentNode as
Inorder_suc.
b.
Repeat until the left child of
Inorder_suc becomes NULL:
i.
Make Inorder_suc point to its
left child.

3.

Replace the information held by currentNode


with that of Inorder_suc.

4.

If the node marked Inorder_suc is a leaf


node:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case I.

5.

If the node marked Inorder_suc has one


child:
a.
Delete the node marked Inorder_suc
by using the algorithm for Case II.

Delete node 72:


root

52

.
parent

36

68

.
currentNode

24

59

75

.
.

70

80

75

Delete operation complete


Inorder_suc
Ver. 1.0

Session 13

Data Structures and Algorithms


Activity: Implementing a Binary Search Tree
Problem Statement:
Write a program to implement insert and traverse operations
on a binary search tree that contains the words in a dictionary.

Ver. 1.0

Session 13

Data Structures and Algorithms


Summary
In this session, you learned that:
A tree is a nonlinear data structure that represents a
hierarchical relationship among the various data elements.
A binary tree is a specific type of tree in which each node can
have a maximum of two children.
Binary trees can be implemented by using arrays as well as
linked lists, depending upon requirement.
Traversal of a tree is the process of visiting all the nodes of the
tree once. There are three types of traversals, namely inorder,
preorder, and postorder traversal.
Binary search tree is a binary tree in which the value of the left
child of a node is always less than the value of the node, and
the value of the right child of a node is greater than the value of
the node.

Ver. 1.0

Session 13

Data Structures and Algorithms


Summary (Contd.)
Inserting a node in a binary search tree requires you to first
locate the appropriate position for the node to be inserted.
You need to check for the following three cases before deleting
a node from a binary search tree.
If the node to be deleted is the leaf node
If the node to be deleted has one child (left or right)
If the node to be deleted has two children

Ver. 1.0

Session 13

You might also like