SlideShare a Scribd company logo
1 of 153
Download to read offline
CS8391-DATA STRUCTURES
Unit - III
Dr. A. Kathirvel
Professor, Dept of CSE, M N M J E C, Chennai
UNIT III NON LINEAR DATA STRUCTURES – TREES
 Tree ADT – tree traversals – Binary Tree ADT –
expression trees – applications of trees – binary
search tree ADT –Threaded Binary Trees- AVL Trees
– B-Tree – B+ Tree – Heap – Applications of heap.
 TEXT BOOKS:
1. Mark Allen Weiss, “Data Structures and Algorithm
Analysis in C”, 2nd Edition, Pearson Education,1997.
2. Reema Thareja, “Data Structures Using C”, Second
Edition, Oxford University Press, 2011
29 June 2018
2
MNMJEC, Chennai - 600 097
29 June 2018MNMJEC, Chennai - 600 097
3
Topics
 Types of Data Structures
 Examples for each type
 Tree Data Structure
 Basic Terminology
 Tree ADT
 Traversal Algorithms
 Binary Trees
 Binary Tree Representations
 Binary Tree ADT
 Binary Tree Traversals
29 June 2018MNMJEC, Chennai - 600 097
4
Types of Data Structure
29 June 2018MNMJEC, Chennai - 600 097
5
Linear Data Structures
 In linear data structure, member elements form a
sequence. Such linear structures can be represented in
memory by using one of the two basic strategies
 By having the linear relationship between the
elements represented by means of sequential memory
locations. These linear structures are called arrays. By
having relationship between the elements represented
by pointers. These structures are called linked lists.
29 June 2018MNMJEC, Chennai - 600 097
6
When to use them
 Arrays are useful when number of elements to be
stored is fixed.
 Operations like traversal searching and sorting can
easily be performed on arrays.
 On the other hand, linked lists are useful when the
number of data items in the collection are likely to
change.
29 June 2018MNMJEC, Chennai - 600 097
7
Nonlinear Data Structures
 In nonlinear data structures, data elements are not
organized in a sequential fashion. A data item in a
nonlinear data structure could be attached to
several other data elements to reflect a special
relationship among them and all the data items
cannot be traversed in a single run.
 Data structures like multidimensional arrays, trees
and graphs are some examples of widely used
nonlinear data structures.
29 June 2018MNMJEC, Chennai - 600 097
8
Examples
 A Multidimensional Array is simply a collection of one-
dimensional arrays.
 A Tree is a data structure that is made up of a set of
linked nodes, which can be used to represent a
hierarchical relationship among data elements.
 A Graph is a data structure that is made up of a finite
set of edges and vertices. Edges represent connections
or relationships among vertices that stores data
elements.
29 June 2018MNMJEC, Chennai - 600 097
9
Difference
 Main difference between linear and nonlinear data
structures lie in the way they organize data elements.
 In linear data structures, data elements are organized
sequentially and therefore they are easy to implement
in the computer’s memory.
 In nonlinear data structures, a data element can be
attached to several other data elements to represent
specific relationships that exist among them.
29 June 2018MNMJEC, Chennai - 600 097
10
Difficult to Implement
 Due to this nonlinear structure, they might be difficult to
implement in computer’s linear memory compared to
implementing linear data structures.
 Selecting one data structure type over the other should
be done carefully by considering the relationship
among the data elements that needs to be stored.
29 June 2018MNMJEC, Chennai - 600 097
11
A Specific Example
 Imagine that you are hired by company XYZ to
organize all of their records into a computer database.
 The first thing you are asked to do is create a
database of names with all the company's management
and employees.
 To start your work, you make a list of everyone in the
company along with their position and other details.
29 June 2018MNMJEC, Chennai - 600 097
12
Employees Table
29 June 2018MNMJEC, Chennai - 600 097
13
Disadvantages of Tables
 But this list only shows one view of the company. You
also want your database to represent the
relationships between management and employees
at XYZ.
 Although your list contains both name and position,
it does not tell you which managers are responsible
for which workers and so on.
 After thinking about the problem for a while, you
decide that a tree diagram is a much better
structure for showing the work relationships at XYZ.
29 June 2018MNMJEC, Chennai - 600 097
14
Better Representation
29 June 2018MNMJEC, Chennai - 600 097
15
Comparison
 These two diagrams are examples of different data
structures.
 In one of the data structures, your data is organized
into a list. This is very useful for keeping the names of
the employees in alphabetical order so that we can
locate the employee's record very quickly.
 However, this structure is not very useful for showing the
relationships between employees. A tree structure is
much better suited for this purpose.
29 June 2018MNMJEC, Chennai - 600 097
16
Tree Data Structure
 A Tree is a nonlinear data structure that models a
hierarchical organization.
 The characteristic features are that each element
may have several successors (called its “children”)
and every element except one (called the “root”) has
a unique predecessor (called its “parent”).
 Trees are common in computer science: Computer file
systems are trees, the inheritance structure for
C++/Java classes is a tree.
29 June 2018MNMJEC, Chennai - 600 097
17
What is a Tree ?
 In Computer Science, a tree is an abstract model of
a hierarchical structure
 A tree consists of nodes with a parent-child
relation
 Applications:
 Organization Charts
 File Systems
 Programming Environment
29 June 2018MNMJEC, Chennai - 600 097
18
Tree Definition
 Here is the recursive definition of an (unordered) tree:
 A tree is a pair (r, S), where r is a node and S is a set of
disjoint trees, none of which contains r.
 The node r is called the root of the tree T, and the
elements of the set S are called its subtrees.
 The set S, of course, may be empty.
 The elements of a tree are called its nodes.
29 June 2018MNMJEC, Chennai - 600 097
19
Root, Parent and Children
 If T = (x, S) is a tree, then
 x is the root of T and
 S is its set of subtrees S = {T1, T2, T3, . . ., Tn}.
 Each subtree Tj is itself a tree with its own root rj .
 In this case, we call the node r the parent of each node
rj, and we call the rj the children of r. In general.
29 June 2018MNMJEC, Chennai - 600 097
20
Basic Terminology
 A node with no children is called a leaf. A node
with at least one child is called an internal node.
 The Node having further sub-branches is called
parent node.
 Every node c other than the root is connected by
an edge to some one other node p called the
parent of c.
 We also call c a child of p.
29 June 2018 MNMJEC, Chennai - 600 097 21
An Example
 n1 is the parent of n2 ,n3 and
n4, while n2 is the parent of n5
and n6. Said another way, n2,
n3, and n4 are children of n1,
while n5 and n6 are children of
n2.
29 June 2018MNMJEC, Chennai - 600 097
22
Connected Tree
 A tree is connected in the sense that if we start at any
node n other than the root, move to the parent of n, to
the parent of the parent of n, and so on, we eventually
reach the root of the tree.
 For instance, starting at n7, we move to its parent, n4,
and from there to n4’s parent, which is the root, n1.
29 June 2018MNMJEC, Chennai - 600 097
23
Ancestors and Descendants
 The parent-child relationship can be extended
naturally to ancestors and descendants.
 Informally, the ancestors of a node are found by
following the unique path from the node to its
parent, to its parent’s parent, and so on.
 The descendant relationship is the inverse of the
ancestor relationship, just as the parent and child
relationships are inverses of each other.
29 June 2018MNMJEC, Chennai - 600 097
24
Path and Path Length
 More formally, suppose m1,m2, . . . ,mk is a sequence of
nodes in a tree such that m1 is the parent of m2, which is
the parent of m3, and so on, down to mk−1, which is the
parent of mk. Then m1,m2, . . . ,mk is called a path from
m1 to mk in the tree. The path length or length of the
path is k −1, one less than the number of nodes on the
path.
29 June 2018MNMJEC, Chennai - 600 097
25
In our Example
 n1, n2, n6 is a path of length 2 from the root n1 to the
node n6.
29 June 2018MNMJEC, Chennai - 600 097
26
Height and Depth
 In a tree, the height of a node n is the length of a
longest path from n to a leaf. The height of the tree is
the height of the root.
 The depth, or level, of a node n is the length of the path
from the root to n.
29 June 2018MNMJEC, Chennai - 600 097
27
In our Example
 node n1 has height 2, n2 has height 1, and leaf n3 has height 0.
In fact, any leaf has height 0. The height of the tree is 2. The
depth of n1 is 0, the depth of n2 is 1, and the depth of n5 is 2.
29 June 2018MNMJEC, Chennai - 600 097
28
Other Terms
 The size of a tree is the number of nodes it contains.
 The total number of subtrees attached to that node is
called the degree of the node.
 Degree of the Tree is nothing but the maximum degree
in the tree.
 The nodes with common parent are called siblings or
brothers.
29 June 2018MNMJEC, Chennai - 600 097
29
Degree
29 June 2018MNMJEC, Chennai - 600 097
30
Degree of the Tree
29 June 2018MNMJEC, Chennai - 600 097
31
Siblings
29 June 2018MNMJEC, Chennai - 600 097
32
Terminology Explained
29 June 2018MNMJEC, Chennai - 600 097
33
Another Example
29 June 2018MNMJEC, Chennai - 600 097
34
Subtrees
29 June 2018MNMJEC, Chennai - 600 097
35
Binary Tree
 A binary tree is a tree in which no node can have more
than two subtrees. In other words, a node can have
zero, one or two subtrees.
29 June 2018MNMJEC, Chennai - 600 097
36
Tree ADT
 The tree ADT stores elements at positions, which are
defined relative to neighboring positions.
 Positions in a tree are its nodes, and the neighboring
positions satisfy the parent-child relationships that
define a valid tree.
 Tree nodes may store arbitrary objects.
29 June 2018MNMJEC, Chennai - 600 097
37
Methods of a Tree ADT
 As with a list position, a position object for a tree
supports the method: element() : that returns the
object stored at this position (or node).
 The tree ADT supports four types of methods:
 Accessor Methods
 Generic Methods
 Query Methods
 Update Methods
29 June 2018MNMJEC, Chennai - 600 097
38
Accessor Methods
 We use positions to abstract nodes. The real power of
node positions in a tree comes from the accessor
methods of the tree ADT that return and accept
positions, such as the following:
 root(): Return the position of the tree’s root; an error occurs
if the tree is empty.
 parent(p): Return the position of the parent of p; an error
occurs if p is the root.
 children(p): Return an iterable collection containing the
children of node p.
 Iterable - you can step through (i.e. iterate) the object as a
collection
29 June 2018MNMJEC, Chennai - 600 097
39
Make a note of it
 If a tree T is ordered, then the iterable collection,
children(p), stores the children of p in their linear order.
 If p is an external node, then children(p) is empty.
 Any method that takes a position as argument should
generate an error condition if that position is invalid.
29 June 2018MNMJEC, Chennai - 600 097
40
Generic Methods
 Tree ADT also supports the following Generic Methods:
 size(): Return the number of nodes in the tree.
 isEmpty(): Test whether the tree has any nodes or not.
 Iterator(): Return an iterator of all the elements stored at
nodes of the tree.
 positions(): Return an iterable collection of all the nodes of
the tree.
29 June 2018MNMJEC, Chennai - 600 097
41
Query Methods
 In addition to the above fundamental accessor methods,
the tree ADT also supports the following Boolean query
methods:
 isInternal(p): Test whether node p is an internal node
 isExternal(p): Test whether node p is an external node
 isRoot(p): Test whether node p is the root node
(These methods make programming with tree easier and more readable, since
we can use them in the conditionals of if -statements and while -loops, rather
than using a non-intuitive conditional).
29 June 2018MNMJEC, Chennai - 600 097
42
Update Methods
 The tree ADT also supports the following update
method:
 replace(p, e): Replace with e and return the element stored
at node p.
(Additional update methods may be defined by data
structures implementing the tree ADT)
29 June 2018MNMJEC, Chennai - 600 097
43
Tree ADT Exceptions
 An interface for the tree ADT uses the following
exceptions to indicate error conditions:
 InvalidPositionException: This error condition may be thrown
by any method taking a position as an argument to indicate
that the position is invalid.
 BoundaryViolationException: This error condition may be
thrown by method parent() if it’s called on the root.
 EmptyTreeException: This error condition may be thrown by
method root() if it’s called on an empty tree.
29 June 2018MNMJEC, Chennai - 600 097
44
Traversal Algorithms
 A traversal (circumnavigation) algorithm is a method for
processing a data structure that applies a given
operation to each element of the structure.
 For example, if the operation is to print the contents of
the element, then the traversal would print every
element in the structure.
 The process of applying the operation to an element is
called visiting the element. So executing the traversal
algorithm causes each element in the structure to be
visited.
29 June 2018MNMJEC, Chennai - 600 097
45
Level Order Traversal
 The level order traversal algorithm visits the root,
then visits each element on the first level, then visits
each element on the second level, and so forth,
each time visiting all the elements on one level
before going down to the next level.
 If the tree is drawn in the usual manner with its root
at the top and leaves near the bottom, then the
level order pattern is the same left-to-right top-to-
bottom pattern that you follow to read English text.
29 June 2018MNMJEC, Chennai - 600 097
46
Level Order Example
29 June 2018MNMJEC, Chennai - 600 097
47
Level order Traversal - Algorithm
 To traverse a nonempty ordered tree:
1. Initialize a queue.
2. Enqueue the root.
3. Repeat steps 4–6 until the queue is empty.
4. Dequeue node x from the queue.
5. Visit x.
6. Enqueue all the children of x in order.
29 June 2018MNMJEC, Chennai - 600 097
48
Preorder Traversal
The preorder traversal of the tree shown above would visit the nodes in this order:
a, b, e, h, i, f, c, d, g, j, k, l, m.
Note that the preorder traversal of a tree can be obtained by circumnavigating
the tree, beginning at the root and visiting each node the first time it is encountered
on the left.
29 June 2018MNMJEC, Chennai - 600 097
49
Preorder Traversal - Algorithm
 To traverse a nonempty ordered tree:
1. Visit the root.
2. Do a recursive preorder traversal of each subtree in
order.
 The postorder traversal algorithm does a postorder
traversal recursively to each subtree before visiting the
root.
29 June 2018MNMJEC, Chennai - 600 097
50
Binary Trees
 A binary tree is either the empty set or a triple T = (x,
L, R), where x is a node and L and R are disjoint binary
trees, neither of which contains x.
 The node x is called the root of the tree T, and the
subtrees L and R are called the left subtree and the
right subtree of T rooted at x.
29 June 2018MNMJEC, Chennai - 600 097
51
Binary Tree
29 June 2018MNMJEC, Chennai - 600 097
52
Terminologies
 The definitions of the terms size, path, length of a path,
depth of a node, level, height, interior node, ancestor,
descendant, and subtree are the same for binary trees
as for general trees.
29 June 2018MNMJEC, Chennai - 600 097
53
Trees and Binary Trees - Difference
 It is important to understand that while binary trees
require us to distinguish whether a child is either a
left child or a right child, ordinary trees require no
such distinction.
 There is another technical difference. While trees
are defined to have at least one node, it is
convenient to include the empty tree, the tree Empty
tree with no nodes, among the binary trees.
29 June 2018MNMJEC, Chennai - 600 097
54
Difference Continued
 That is, binary trees are not just trees all of whose nodes have two or fewer
children.
 Not only are the two trees in the above Figure are different from each other, but
they have no relation to the ordinary tree consisting of a root and a single child
of the root:
29 June 2018MNMJEC, Chennai - 600 097
55
Five binary trees with three nodes
29 June 2018MNMJEC, Chennai - 600 097
56
Full and Complete Binary Trees
 A binary tree is said to be full if all its leaves are at
the same level and every interior node has two
children.
 A complete binary tree is either a full binary tree or
one that is full except for a segment of missing leaves
on the right side of the bottom level.
29 June 2018MNMJEC, Chennai - 600 097
57
Full and Complete Binary Trees
29 June 2018MNMJEC, Chennai - 600 097
58
Full Binary Tree
29 June 2018MNMJEC, Chennai - 600 097
59
Complete Binary Tree
29 June 2018MNMJEC, Chennai - 600 097
60
Full Binary Trees
 The full binary tree of height h has l = 2h leaves and m
= 2h – 1 internal nodes.
 The full binary tree of height h has a total of n = 2h+1 –
1 nodes.
 The full binary tree with n nodes has height h = lg(n+1)
– 1.
29 June 2018MNMJEC, Chennai - 600 097
61
Complete Binary Tree
 In a complete binary tree of height h,
h + 1 ≤ n ≤ 2h+1 – 1 and h = └ lg n ┘
29 June 2018MNMJEC, Chennai - 600 097
62
Make a Note
 Complete binary trees are important because they
have a simple and natural implementation using
ordinary arrays.
 The natural mapping is actually defined for any binary
tree: Assign the number 1 to the root; for any node, if i
is its number, then assign 2i to its left child and 2i+1
to its right child (if they exist).
 This assigns a unique positive integer to each node.
Then simply store the element at node i in a[i], where
a[] is an array.
29 June 2018MNMJEC, Chennai - 600 097
63
Binary Tree Representations
 If a complete binary tree with n nodes (depth = log n
+ 1) is represented sequentially, then for any node
with index i, 1 ≤ i ≤ n, we have:
 parent(i) is at i/2 if i!=1. If i=1, i is at the root and has no
parent.
 leftChild(i) is at 2i if 2i ≤ n. If 2i > n, then i has noleft child.
 rightChild(i) is at 2i+1 if 2i +1 ≤ n. If 2i +1 >n,
then i has no right child.
29 June 2018MNMJEC, Chennai - 600 097
64
Array Implementation
29 June 2018MNMJEC, Chennai - 600 097
65
The Disadvantage
 Figure above shows the incomplete binary tree and the natural mapping of its
nodes into an array which leaves some gaps.
29 June 2018MNMJEC, Chennai - 600 097
66
Linked List Implementation
typedef struct tnode *ptnode;
typedef struct tnode
{
int data;
ptnode left, right;
};
29 June 2018MNMJEC, Chennai - 600 097
67
Linked List Implementation
29 June 2018MNMJEC, Chennai - 600 097
68
Include One more Pointer
 A natural way to implement a tree T is to use a linked
structure, where we represent each node p of T by a
position object with the following fields:
 A link to the parent of p, A link to the LeftChild named Left, a link to
the RightChild named Right and the Data.
Parent
Data
Left Right
29 June 2018MNMJEC, Chennai - 600 097
69
Array Implementation
 Advantages
 Direct Access
 Finding the Parent / Children is fast
 Disadvantages
 Wastage of memory
 Insertion and Deletion will be costlier
 Array size and depth
29 June 2018MNMJEC, Chennai - 600 097
70
Linked List Implementation
 Advantages
 No wastage of memory
 Insertion and Deletion will be easy
 Disadvantages
 Does not provide direct access
 Additional space in each node.
29 June 2018MNMJEC, Chennai - 600 097
71
Binary Tree ADT
 The Binary Tree ADT extends the Tree ADT, i.e., it
inherits all the methods of the Tree ADT, in addition to
that it supports the following additional accessor
methods:
 position left(p): return the left child of p, an error condition
occurs if p has no left child.
 position right(p): return the right child of p, an error
condition occurs if p has no right child.
 boolean hasLeft(p): test whether p has a left child
 boolean hasRight(p): test whether p has a right child
29 June 2018MNMJEC, Chennai - 600 097
72
Binary Tree ADT (Cont.)
 Update methods may be defined by data structures
implementing the Binary Tree ADT.
 Since Binary trees are ordered trees, the iterable
collection returned by method chilrden(p) (inherited
from the Tree ADT), stores the left child of p before the
right child of p.
29 June 2018MNMJEC, Chennai - 600 097
73
Binary Tree Traversals
 The three traversal algorithms that are used for general
trees (see Chapter 10) apply to binary trees as well:
the preorder traversal, the postorder traversal, and the
level order traversal.
 In addition, binary trees support a fourth traversal
algorithm: the inorder traversal. These four traversal
algorithms are given next.
29 June 2018MNMJEC, Chennai - 600 097
74
Level Order Traversal
 To traverse a nonempty binary tree:
1. Initialize a queue.
2. Enqueue the root.
3. Repeat steps 4–7 until the queue is empty.
4. Dequeue a node x from the queue.
5. Visit x.
6. Enqueue the left child of x if it exists.
7. Enqueue the right child of x if it exists.
29 June 2018MNMJEC, Chennai - 600 097
75
Level Order
29 June 2018MNMJEC, Chennai - 600 097
76
Preorder Traversal
 To traverse a nonempty binary tree:
1. Visit the root.
2. If the left subtree is nonempty, do a preorder
traversal on it.
3. If the right subtree is nonempty, do a preorder
traversal on it.
29 June 2018MNMJEC, Chennai - 600 097
77
Preorder
29 June 2018MNMJEC, Chennai - 600 097
78
Postorder Traversal
 To traverse a nonempty binary tree:
1. If the left subtree is nonempty, do a postorder
traversal on it.
2. If the right subtree is nonempty, do a
postorder traversal on it.
3. Visit the root.
29 June 2018MNMJEC, Chennai - 600 097
79
Postorder
29 June 2018MNMJEC, Chennai - 600 097
80
Inorder Traversal
 To traverse a nonempty binary tree:
1. If the left subtree is nonempty, do a preorder
traversal on it.
2. Visit the root.
3. If the right subtree is nonempty, do a preorder
traversal on it.
29 June 2018MNMJEC, Chennai - 600 097
81
Inorder
29 June 2018MNMJEC, Chennai - 600 097
82
Traversal Using Flag
 The order in which the nodes are visited during a tree traversal can
be easily determined by imagining there is a “flag” attached to
each node, as follows:
 To traverse the tree, collect the flags:
29 June 2018MNMJEC, Chennai - 600 097
83
Inorder and Postorder
29 June 2018MNMJEC, Chennai - 600 097
84
Topics
 Binary Trees
 Binary Tree Representations
 Binary Tree ADT
 Binary Tree Traversals
 Algebraic Expressions
 Expression Trees
 Binary Search Tree
 Binary Search Property
 Operations on BST
29 June 2018MNMJEC, Chennai - 600 097
85
Full and Complete Binary Trees
 A binary tree is said to be full if all its leaves are at
the same level and every interior node has two
children.
 A complete binary tree is either a full binary tree or
one that is full except for a segment of missing leaves
on the right side of the bottom level.
29 June 2018MNMJEC, Chennai - 600 097
86
Full and Complete Binary Trees
29 June 2018MNMJEC, Chennai - 600 097
87
Full Binary Tree
29 June 2018MNMJEC, Chennai - 600 097
88
Complete Binary Tree
29 June 2018MNMJEC, Chennai - 600 097
89
Full Binary Trees
 The full binary tree of height h has l = 2h leaves and m
= 2h – 1 internal nodes.
 The full binary tree of height h has a total of n = 2h+1 –
1 nodes.
 The full binary tree with n nodes has height h = lg(n+1)
– 1.
29 June 2018MNMJEC, Chennai - 600 097
90
Complete Binary Tree
 In a complete binary tree of height h,
h + 1 ≤ n ≤ 2h+1 – 1 and h = └ lg n ┘
29 June 2018MNMJEC, Chennai - 600 097
91
Make a Note
 Complete binary trees are important because they
have a simple and natural implementation using
ordinary arrays.
 The natural mapping is actually defined for any binary
tree: Assign the number 1 to the root; for any node, if i
is its number, then assign 2i to its left child and 2i+1
to its right child (if they exist).
 This assigns a unique positive integer to each node.
Then simply store the element at node i in a[i], where
a[] is an array.
29 June 2018MNMJEC, Chennai - 600 097
92
Binary Tree Representations
 If a complete binary tree with n nodes (depth = log n
+ 1) is represented sequentially, then for any node
with index i, 1 ≤ i ≤ n, we have:
 parent(i) is at i/2 if i!=1. If i=1, i is at the root and has no
parent.
 leftChild(i) is at 2i if 2i ≤ n. If 2i > n, then i has noleft child.
 rightChild(i) is at 2i+1 if 2i +1 ≤ n. If 2i +1 >n,
then i has no right child.
29 June 2018MNMJEC, Chennai - 600 097
93
Array Implementation
29 June 2018MNMJEC, Chennai - 600 097
94
The Disadvantage
 Figure above shows the incomplete binary tree and the natural mapping of its
nodes into an array which leaves some gaps.
29 June 2018MNMJEC, Chennai - 600 097
95
Linked List Implementation
typedef struct tnode *ptnode;
typedef struct tnode
{
int data;
ptnode left, right;
};
29 June 2018MNMJEC, Chennai - 600 097
96
Linked List Implementation
29 June 2018MNMJEC, Chennai - 600 097
97
Include One more Pointer
 A natural way to implement a tree T is to use a linked
structure, where we represent each node p of T by a
position object with the following fields:
 A link to the parent of p, A link to the LeftChild named Left, a
link to the RightChild named Right and the Data.
Parent
Data
Left Right
29 June 2018MNMJEC, Chennai - 600 097
98
Array Implementation
 Advantages
 Direct Access
 Finding the Parent / Children is fast
 Disadvantages
 Wastage of memory
 Insertion and Deletion will be costlier
 Array size and depth
29 June 2018MNMJEC, Chennai - 600 097
99
Linked List Implementation
 Advantages
 No wastage of memory
 Insertion and Deletion will be easy
 Disadvantages
 Does not provide direct access
 Additional space in each node.
29 June 2018MNMJEC, Chennai - 600 097
100
Binary Tree ADT
 The Binary Tree ADT extends the Tree ADT, i.e., it
inherits all the methods of the Tree ADT, in addition to
that it supports the following additional accessor
methods:
 position left(p): return the left child of p, an error condition
occurs if p has no left child.
 position right(p): return the right child of p, an error
condition occurs if p has no right child.
 boolean hasLeft(p): test whether p has a left child
 boolean hasRight(p): test whether p has a right child
29 June 2018MNMJEC, Chennai - 600 097
101
Binary Tree ADT (Cont.)
 Update methods may be defined by data structures
implementing the Binary Tree ADT.
 Since Binary trees are ordered trees, the iterable
collection returned by method chilrden(p) (inherited
from the Tree ADT), stores the left child of p before the
right child of p.
29 June 2018MNMJEC, Chennai - 600 097
102
Binary Tree Traversals
 The three traversal algorithms that are used for general
trees (see Chapter 10) apply to binary trees as well:
the preorder traversal, the postorder traversal, and the
level order traversal.
 In addition, binary trees support a fourth traversal
algorithm: the inorder traversal. These four traversal
algorithms are given next.
29 June 2018MNMJEC, Chennai - 600 097
103
Level Order Traversal
 To traverse a nonempty binary tree:
1. Initialize a queue.
2. Enqueue the root.
3. Repeat steps 4–7 until the queue is empty.
4. Dequeue a node x from the queue.
5. Visit x.
6. Enqueue the left child of x if it exists.
7. Enqueue the right child of x if it exists.
29 June 2018MNMJEC, Chennai - 600 097
104
Level Order
29 June 2018MNMJEC, Chennai - 600 097
105
Preorder Traversal
 To traverse a nonempty binary tree:
1. Visit the root.
2. If the left subtree is nonempty, do a preorder
traversal on it.
3. If the right subtree is nonempty, do a preorder
traversal on it.
29 June 2018MNMJEC, Chennai - 600 097
106
Preorder
29 June 2018MNMJEC, Chennai - 600 097
107
Postorder Traversal
 To traverse a nonempty binary tree:
1. If the left subtree is nonempty, do a postorder
traversal on it.
2. If the right subtree is nonempty, do a
postorder traversal on it.
3. Visit the root.
29 June 2018MNMJEC, Chennai - 600 097
108
Postorder
29 June 2018MNMJEC, Chennai - 600 097
109
Inorder Traversal
 To traverse a nonempty binary tree:
1. If the left subtree is nonempty, do a preorder
traversal on it.
2. Visit the root.
3. If the right subtree is nonempty, do a preorder
traversal on it.
29 June 2018MNMJEC, Chennai - 600 097
110
Inorder
29 June 2018MNMJEC, Chennai - 600 097
111
Traversal Using Flag
 The order in which the nodes are visited during a tree traversal can
be easily determined by imagining there is a “flag” attached to
each node, as follows:
 To traverse the tree, collect the flags:
29 June 2018MNMJEC, Chennai - 600 097
112
Inorder and Postorder
29 June 2018MNMJEC, Chennai - 600 097
113
A Simple Application
 A Simple application of trees is to store
mathematical expressions in a convenient form. Let's
stick for the moment to expressions made up of
numbers and the operators +, -, *, and /.
 We will refer to a tree of this type as an Expression
Tree
29 June 2018MNMJEC, Chennai - 600 097
114
Algebraic Expressions - Introduction
 An algebraic expression is a legal combination of
operands and operators. Operand is the quantity (unit
of data) on which a mathematical operation is
performed.
 Operand may be a variable like x, y, z or a constant
like 5, 4,0,9,1 etc. Operator is a symbol which signifies
a mathematical or logical operation between the
operands.
 We can write an example of expression as x+y*z.
29 June 2018MNMJEC, Chennai - 600 097
115
Algebraic Expressions
 Note the phrase "LEGAL combination" in the definition
of an Algebraic Expression, in aforementioned example
of expression x+y*z, the operands x , y, z and the
operators +,* form some legal combination.
 Take another example +xyz*, in this expression
operators and operands do not make any LEGAL
combination; this expression is not a valid algebraic
expression.
29 June 2018MNMJEC, Chennai - 600 097
116
Algebraic Expressions (2)
 An Algebraic Expression can be represented using three different
notations:
 INFIX: From our school times we have been familiar with the expressions in
which operands surround the operator, e.g. x+y, 6*3 etc this way of writing
the Expressions is called infix notation.
 PREFIX: Prefix notation also Known as Polish notation, is a symbolic logic
invented by Polish mathematician in 1920's. In the prefix notation, as the
name only suggests, operator comes before the operands, e.g. +xy, *+xyz
etc.
 POSTFIX: Postfix notation is also Known as Reverse Polish notation. They are
different from the infix and prefix notations in the sense that in the postfix
notation, the operator comes after the operands, e.g. xy+, xyz+* etc.
29 June 2018MNMJEC, Chennai - 600 097
117
Algebraic Expressions (3)
 Now, the obvious question that comes in our mind is,
Why use these weird looking PREFIX and POSTFIX
notations when we have a sweet and simple INFIX
notation?
 To our surprise INFIX notations are not as simple as they
seem specially while evaluating them. To evaluate an
infix expression we need to consider Operators' Priority
and Associativity.
29 June 2018MNMJEC, Chennai - 600 097
118
Algebraic Expressions (3)
 Due to the above mentioned problem of considering operators'
Priority and Associativity while evaluating an expression using infix
notation, we use prefix and postfix notations.
 Both prefix and postfix notations have an advantage over infix
that while evaluating an expression in prefix or postfix form we
need not consider the Priority and Associativity of the operators.
Both prefix and postfix notations make Expression Evaluation a lot
easier.
29 June 2018MNMJEC, Chennai - 600 097
119
How to Represent ?
 Arithmetic expressions can be represented by labeled
trees, and it is often quite helpful to visualize
expressions as trees.
 In fact, expression trees, as they are sometimes called,
specify the association of an expression’s operands and
its operators in a uniform way, regardless of whether
the association is required by the placement of
parentheses in the expression or by the precedence
and associativity rules for the operators involved.
29 June 2018MNMJEC, Chennai - 600 097
120
General Idea
 The general idea is that each time we form a larger
expression by applying an operator to smaller
expressions, we create a new node, labeled by that
operator.
 The new node becomes the root of the tree for the
large expression, and its children are the roots of the
trees for the smaller expressions.
29 June 2018MNMJEC, Chennai - 600 097
121
The Rule
 For instance, we can define the labeled trees for
arithmetic expressions with the binary operators:
 BASIS. A single atomic operand (e.g., a variable, an
integer, or a real) is an expression, and its tree is a single
node, labeled by that operand.
 INDUCTION. If E1 and E2 are expressions represented by
trees T1 and T2, respectively, then the expression (E1 + E2)
is represented by the tree of whose root is labeled +. This
root has two children, which are the roots of T1 and T2,
respectively, in that order.
29 June 2018MNMJEC, Chennai - 600 097
122
Apply the Rule
29 June 2018MNMJEC, Chennai - 600 097
123
Examples
29 June 2018MNMJEC, Chennai - 600 097
124
Expression Tree
 Consider the expression 2*3/(2-1)+5*(4-1). This
expression is made up of two subexpressions, 2*3/(2-
1) and 5*(4-1), combined with the operator "+".
 When the expression is represented as a binary tree,
the root node holds the operator +, while the subtrees
of the root node represent the subexpressions 2*3/(2-
1) and 5*(4-1).
29 June 2018MNMJEC, Chennai - 600 097
125
Expression Tree (2)
 Every node in the tree holds either a number or an
operator. A node that holds a number is a leaf node of
the tree.
 A node that holds an operator has two subtrees
representing the operands to which the operator
applies. The tree is shown in the next Slide.
29 June 2018MNMJEC, Chennai - 600 097
126
Expression Tree (3)
29 June 2018MNMJEC, Chennai - 600 097
127
Expression Tree - Evaluation
 Given an expression tree, it's easy to find the value
of the expression that it represents. Each node in
the tree has an associated value.
 If the node is a leaf node, then its value is simply
the number that the node contains. If the node
contains an operator, then the associated value is
computed by first finding the values of its child
nodes and then applying the operator to those
values.
29 June 2018MNMJEC, Chennai - 600 097
128
Expression Tree – Evaluation (2)
 The process is shown by the upward-directed arrows in
the illustration. The value computed for the root node is
the value of the expression as a whole. There are other
uses for expression trees. For example, a postorder
traversal of the tree will output the postfix form of the
expression.
29 June 2018MNMJEC, Chennai - 600 097
129
Expression Tree - Evaluation (3)
29 June 2018MNMJEC, Chennai - 600 097
130
Binary Search Trees
 Search trees are data structures that support many
dynamic-set operations, including SEARCH, MINIMUM,
MAXIMUM, PREDECESSOR, SUCCESSOR, INSERT, and
DELETE.
 Thus, a search tree can be used both as a dictionary
and as a priority queue.
 One good way to implement a dictionary is with a
binary search tree, which is a kind of labeled binary
tree.
29 June 2018MNMJEC, Chennai - 600 097
131
Binary Search Tree Property
 A binary search tree (BST) is a labeled binary tree in
which the following property holds at every node x in
the tree:
 all nodes in the left subtree of x have labels less than the
label of x, and all nodes in the right subtree have labels
greater than the label of x. This property is called the
binary search tree property.
29 June 2018MNMJEC, Chennai - 600 097
132
An Example
29 June 2018MNMJEC, Chennai - 600 097
133
Some More Examples
29 June 2018MNMJEC, Chennai - 600 097
134
Looking Up an Element
 Suppose we want to look for an element x that may be in a
dictionary represented by a binary search tree T . If we compare x
with the element at the root of T , we can take advantage of the
BST property to locate x quickly or determine that x is not present.
 If x is at the root, we are done. Otherwise, if x is less than the
element at the root, x could be found only in the left subtree (by
the BST property); and if x is greater, then it could be only in the
right subtree (again, because of the BST property).
29 June 2018MNMJEC, Chennai - 600 097
135
A Recursive Algorithm
 We can express the lookup operation by the
following recursive algorithm.
 BASIS. If the tree T is empty, then x is not present. If T is
not empty, and x appears at the root, then x is present.
 INDUCTION. If T is not empty but x is not at the root,
let y be the element at the root of T . If x < y look up x
only in the left subtree of the root, and if x > y look up
x only in the right subtree of y. The BST property
guarantees that x cannot be in the subtree we do not
search.
29 June 2018MNMJEC, Chennai - 600 097
136
Recursive Procedure
 TREE-SEARCH(x, k)
1 if x = NIL or k = key[x]
2 then return x
3 if k < key[x]
4 then return TREE-SEARCH(left[x], k)
5 else return TREE-SEARCH(right[x], k)
29 June 2018MNMJEC, Chennai - 600 097
137
Iterative Procedure
 The same procedure can be written iteratively by
“unrolling” the recursion with while loop. [Efficient on
most computers]
 ITERATIVE-TREE-SEARCH(x, k)
1 while x ≠ NIL and k ≠ key[x]
2 do if k < key[x]
3 then x ← left[x]
4 else x ← right[x]
5 return x
29 June 2018MNMJEC, Chennai - 600 097
138
Minimum
 An element in a binary search tree whose key is a
minimum can always be found by following left child
pointers from the root until a NIL is encountered
 TREE-MINIMUM(x)
1 while left[x] ≠ NIL
2 do x ← left[x]
3 return x
29 June 2018MNMJEC, Chennai - 600 097
139
Maximum
 The pseudocode for TREE-MAXIMUM is
symmetric.
 TREE-MAXIMUM(x)
1 while right[x] ≠ NIL
2 do x ← right[x]
3 return x
29 June 2018MNMJEC, Chennai - 600 097
140
Successor and predecessor
 Given a node in a binary search tree, it is sometimes
important to be able to find its successor in the sorted
order determined by an inorder tree walk.
 If all keys are distinct, the successor of a node x is the
node with the smallest key greater than key[x].
 The structure of a binary search tree allows us to
determine the successor of a node without ever
comparing keys.
29 June 2018MNMJEC, Chennai - 600 097
141
Tree Successor
 TREE-SUCCESSOR(x)
1 if right[x] = NIL
2 then return TREE-MINIMUM(right[x])
3 y ← p[x]
4 while y = NIL and x = right[y]
5 do x ← y
6 y ← p[y]
7 return y
29 June 2018MNMJEC, Chennai - 600 097
142
The Two Cases of TREE-SUCCSSOR
 The code for TREE-SUCCESSOR is broken into two
cases:
 If the right subtree of node x is nonempty, then the
successor of x is just the leftmost node in the right subtree,
which is found in line 2 by calling TREE-MINIMUM(right[x]).
 On the other hand, if the right subtree of node x is empty
and x has a successor y, then y is the lowest ancestor of x
whose left child is also an ancestor of x
29 June 2018MNMJEC, Chennai - 600 097
143
Example
 The successor of the node with key 15 is the node with key 17, since it is the
minimum key in the right subtree of 15.
 The node with key 13 has no right subtree, and thus its successor is its lowest
ancestor whose left child is also an ancestor. In this case, the node with key 15 is
its successor.
29 June 2018MNMJEC, Chennai - 600 097
144
Insertion and Deletion
 The operations of insertion and deletion cause the
dynamic set represented by a binary search tree to
change.
 The data structure must be modified to reflect this
change, but in such a way that the binary-search-tree
property continues to hold.
 As we shall see, modifying the tree to insert a new
element is relatively straightforward, but handling
deletion is somewhat more intricate.
29 June 2018MNMJEC, Chennai - 600 097
145
Insertion
 To insert a new value v into a binary search tree T , we
use the procedure TREEINSERT.
 The procedure is passed a node z for which key[z] = v,
left[z] = NIL, and right[z] = NIL.
 It modifies T and some of the fields of z in such a way
that z is inserted into an appropriate position in the
tree.
29 June 2018MNMJEC, Chennai - 600 097
146
Tree-Insert Procedure
 TREE-INSERT(T, z)
1 y ← NIL
2 x ← root[T]
3 while x ≠ NIL
4 do y ← x
5 if key[z] < key[x]
6 then x ← left[x]
7 else x ← right[x]
8 p[z] ← y
9 if y = NIL
10 then root[T] ← z
11 else if key[z] < key[y]
12 then left[y] ← z
13 else right[y] ← z
29 June 2018MNMJEC, Chennai - 600 097
147
How it Works ?
 The pointer x traces the path, and the pointer y is
maintained as the parent of x. After initialization, the
while loop in lines 3–7 causes these two pointers to
move down the tree, going left or right depending on
the comparison of key[z] with key[x], until x is set to NIL.
 This NIL occupies the position where we wish to place
the input item z. Lines 8–13 set the pointers that cause z
to be inserted.
29 June 2018MNMJEC, Chennai - 600 097
148
Tree Insert Operation
 Inserting an item with key 13 into a binary search tree.
 Lightly shaded nodes indicate the path from the root down to the position where
the item is inserted.
 The dashed line indicates the link in the tree that is added to insert the item.
29 June 2018MNMJEC, Chennai - 600 097
149
Tree Deletion
 The procedure for deleting a given node z from a binary search
tree takes as an argument a pointer to z. The procedure considers
the three cases:
 If z has no children, we modify its parent p[z] to replace z with NIL as its
child.
 If the node has only a single child, we “splice out” z by making a new link
between its child and its parent.
 Finally, if the node has two children, we splice out z’s successor y, which has no
left child and replace z’s key and satellite data with y’s key and satellite
data.
29 June 2018MNMJEC, Chennai - 600 097
150
Tree Deletion - Case 1
29 June 2018MNMJEC, Chennai - 600 097
151
Tree Deletion - Case 2
29 June 2018MNMJEC, Chennai - 600 097
152
Tree Deletion - Case 3
Questions and Discussion
29 June 2018
153
MNMJEC, Chennai - 600 097

More Related Content

What's hot

Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structure
Sajid Marwat
 
Lecture 1 data structures and algorithms
Lecture 1 data structures and algorithmsLecture 1 data structures and algorithms
Lecture 1 data structures and algorithms
Aakash deep Singhal
 
Linked list
Linked listLinked list
Linked list
VONI
 

What's hot (20)

Data Structures- Part7 linked lists
Data Structures- Part7 linked listsData Structures- Part7 linked lists
Data Structures- Part7 linked lists
 
Binary Search Tree in Data Structure
Binary Search Tree in Data StructureBinary Search Tree in Data Structure
Binary Search Tree in Data Structure
 
Data Structures (CS8391)
Data Structures (CS8391)Data Structures (CS8391)
Data Structures (CS8391)
 
Multi ways trees
Multi ways treesMulti ways trees
Multi ways trees
 
Binary search tree(bst)
Binary search tree(bst)Binary search tree(bst)
Binary search tree(bst)
 
Breadth First Search & Depth First Search
Breadth First Search & Depth First SearchBreadth First Search & Depth First Search
Breadth First Search & Depth First Search
 
Computer Science-Data Structures :Abstract DataType (ADT)
Computer Science-Data Structures :Abstract DataType (ADT)Computer Science-Data Structures :Abstract DataType (ADT)
Computer Science-Data Structures :Abstract DataType (ADT)
 
Graph traversals in Data Structures
Graph traversals in Data StructuresGraph traversals in Data Structures
Graph traversals in Data Structures
 
Stack
StackStack
Stack
 
Binary tree
Binary  treeBinary  tree
Binary tree
 
Lec 17 heap data structure
Lec 17 heap data structureLec 17 heap data structure
Lec 17 heap data structure
 
Queue in Data Structure
Queue in Data Structure Queue in Data Structure
Queue in Data Structure
 
Lecture 1 data structures and algorithms
Lecture 1 data structures and algorithmsLecture 1 data structures and algorithms
Lecture 1 data structures and algorithms
 
Entity Relationship Diagram
Entity Relationship DiagramEntity Relationship Diagram
Entity Relationship Diagram
 
Linked list
Linked listLinked list
Linked list
 
UNIT II LINEAR DATA STRUCTURES – STACKS, QUEUES
UNIT II 	LINEAR DATA STRUCTURES – STACKS, QUEUES	UNIT II 	LINEAR DATA STRUCTURES – STACKS, QUEUES
UNIT II LINEAR DATA STRUCTURES – STACKS, QUEUES
 
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
Linked List, Types of Linked LIst, Various Operations, Applications of Linked...
 
Normalization in DBMS
Normalization in DBMSNormalization in DBMS
Normalization in DBMS
 
Relational model
Relational modelRelational model
Relational model
 
Stack & Queue using Linked List in Data Structure
Stack & Queue using Linked List in Data StructureStack & Queue using Linked List in Data Structure
Stack & Queue using Linked List in Data Structure
 

Similar to UNIT III NON LINEAR DATA STRUCTURES – TREES

Higher Order Learning
Higher Order LearningHigher Order Learning
Higher Order Learning
butest
 
IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...
IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...
IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...
IJERD Editor
 
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKINGINTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
dannyijwest
 
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKINGINTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
IJwest
 

Similar to UNIT III NON LINEAR DATA STRUCTURES – TREES (20)

dsa2.ppt
dsa2.pptdsa2.ppt
dsa2.ppt
 
dsa2.ppt
dsa2.pptdsa2.ppt
dsa2.ppt
 
Bc0041
Bc0041Bc0041
Bc0041
 
Higher Order Learning
Higher Order LearningHigher Order Learning
Higher Order Learning
 
module-1.pdf. Uooyuf sh kcgfkgkggfjk
module-1.pdf.         Uooyuf sh kcgfkgkggfjkmodule-1.pdf.         Uooyuf sh kcgfkgkggfjk
module-1.pdf. Uooyuf sh kcgfkgkggfjk
 
DATA STUCTURES-TREES.pptx
DATA STUCTURES-TREES.pptxDATA STUCTURES-TREES.pptx
DATA STUCTURES-TREES.pptx
 
104333 sri vidhya eng notes
104333 sri vidhya eng notes104333 sri vidhya eng notes
104333 sri vidhya eng notes
 
2. Introduction to Data Structure.pdf
2. Introduction to Data Structure.pdf2. Introduction to Data Structure.pdf
2. Introduction to Data Structure.pdf
 
Ijetcas14 347
Ijetcas14 347Ijetcas14 347
Ijetcas14 347
 
Interpreting the Semantics of Anomalies Based on Mutual Information in Link M...
Interpreting the Semantics of Anomalies Based on Mutual Information in Link M...Interpreting the Semantics of Anomalies Based on Mutual Information in Link M...
Interpreting the Semantics of Anomalies Based on Mutual Information in Link M...
 
IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...
IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...
IJERD (www.ijerd.com) International Journal of Engineering Research and Devel...
 
Ia3613981403
Ia3613981403Ia3613981403
Ia3613981403
 
Ia3613981403
Ia3613981403Ia3613981403
Ia3613981403
 
Drijvers et al_two_lenses
Drijvers et al_two_lensesDrijvers et al_two_lenses
Drijvers et al_two_lenses
 
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKINGINTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
 
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED  ON SEMANTIC TAG RANKINGINTELLIGENT SOCIAL NETWORKS MODEL BASED  ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
 
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKINGINTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
INTELLIGENT SOCIAL NETWORKS MODEL BASED ON SEMANTIC TAG RANKING
 
Introduction of data structures and algorithms
Introduction of data structures and algorithmsIntroduction of data structures and algorithms
Introduction of data structures and algorithms
 
Efficiency of TreeMatch Algorithm in XML Tree Pattern Matching
Efficiency of TreeMatch Algorithm in XML Tree Pattern  MatchingEfficiency of TreeMatch Algorithm in XML Tree Pattern  Matching
Efficiency of TreeMatch Algorithm in XML Tree Pattern Matching
 
Approaches for Keyword Query Routing
Approaches for Keyword Query RoutingApproaches for Keyword Query Routing
Approaches for Keyword Query Routing
 

More from Kathirvel Ayyaswamy

More from Kathirvel Ayyaswamy (20)

22CS201 COA
22CS201 COA22CS201 COA
22CS201 COA
 
22cs201 COMPUTER ORGANIZATION AND ARCHITECTURE
22cs201 COMPUTER ORGANIZATION AND ARCHITECTURE22cs201 COMPUTER ORGANIZATION AND ARCHITECTURE
22cs201 COMPUTER ORGANIZATION AND ARCHITECTURE
 
22CS201 COA
22CS201 COA22CS201 COA
22CS201 COA
 
18CS3040_Distributed Systems
18CS3040_Distributed Systems18CS3040_Distributed Systems
18CS3040_Distributed Systems
 
20CS2021-Distributed Computing module 2
20CS2021-Distributed Computing module 220CS2021-Distributed Computing module 2
20CS2021-Distributed Computing module 2
 
18CS3040 Distributed System
18CS3040 Distributed System	18CS3040 Distributed System
18CS3040 Distributed System
 
20CS2021 Distributed Computing
20CS2021 Distributed Computing 20CS2021 Distributed Computing
20CS2021 Distributed Computing
 
20CS2021 DISTRIBUTED COMPUTING
20CS2021 DISTRIBUTED COMPUTING20CS2021 DISTRIBUTED COMPUTING
20CS2021 DISTRIBUTED COMPUTING
 
18CS3040 DISTRIBUTED SYSTEMS
18CS3040 DISTRIBUTED SYSTEMS18CS3040 DISTRIBUTED SYSTEMS
18CS3040 DISTRIBUTED SYSTEMS
 
Recent Trends in IoT and Sustainability
Recent Trends in IoT and SustainabilityRecent Trends in IoT and Sustainability
Recent Trends in IoT and Sustainability
 
20CS2008 Computer Networks
20CS2008 Computer Networks 20CS2008 Computer Networks
20CS2008 Computer Networks
 
18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security
 
18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security
 
18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security
 
18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security 18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security
 
18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security
 
18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security18CS2005 Cryptography and Network Security
18CS2005 Cryptography and Network Security
 
20CS2008 Computer Networks
20CS2008 Computer Networks20CS2008 Computer Networks
20CS2008 Computer Networks
 
20CS2008 Computer Networks
20CS2008 Computer Networks 20CS2008 Computer Networks
20CS2008 Computer Networks
 
20CS024 Ethics in Information Technology
20CS024 Ethics in Information Technology20CS024 Ethics in Information Technology
20CS024 Ethics in Information Technology
 

Recently uploaded

Query optimization and processing for advanced database systems
Query optimization and processing for advanced database systemsQuery optimization and processing for advanced database systems
Query optimization and processing for advanced database systems
meharikiros2
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
Introduction to Robotics in Mechanical Engineering.pptx
Introduction to Robotics in Mechanical Engineering.pptxIntroduction to Robotics in Mechanical Engineering.pptx
Introduction to Robotics in Mechanical Engineering.pptx
hublikarsn
 
Digital Communication Essentials: DPCM, DM, and ADM .pptx
Digital Communication Essentials: DPCM, DM, and ADM .pptxDigital Communication Essentials: DPCM, DM, and ADM .pptx
Digital Communication Essentials: DPCM, DM, and ADM .pptx
pritamlangde
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Kandungan 087776558899
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
AldoGarca30
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ssuser89054b
 

Recently uploaded (20)

Query optimization and processing for advanced database systems
Query optimization and processing for advanced database systemsQuery optimization and processing for advanced database systems
Query optimization and processing for advanced database systems
 
Integrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - NeometrixIntegrated Test Rig For HTFE-25 - Neometrix
Integrated Test Rig For HTFE-25 - Neometrix
 
Online food ordering system project report.pdf
Online food ordering system project report.pdfOnline food ordering system project report.pdf
Online food ordering system project report.pdf
 
Introduction to Robotics in Mechanical Engineering.pptx
Introduction to Robotics in Mechanical Engineering.pptxIntroduction to Robotics in Mechanical Engineering.pptx
Introduction to Robotics in Mechanical Engineering.pptx
 
Digital Communication Essentials: DPCM, DM, and ADM .pptx
Digital Communication Essentials: DPCM, DM, and ADM .pptxDigital Communication Essentials: DPCM, DM, and ADM .pptx
Digital Communication Essentials: DPCM, DM, and ADM .pptx
 
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak HamilCara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
Cara Menggugurkan Sperma Yang Masuk Rahim Biyar Tidak Hamil
 
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
COST-EFFETIVE  and Energy Efficient BUILDINGS ptxCOST-EFFETIVE  and Energy Efficient BUILDINGS ptx
COST-EFFETIVE and Energy Efficient BUILDINGS ptx
 
Signal Processing and Linear System Analysis
Signal Processing and Linear System AnalysisSignal Processing and Linear System Analysis
Signal Processing and Linear System Analysis
 
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptxHOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
HOA1&2 - Module 3 - PREHISTORCI ARCHITECTURE OF KERALA.pptx
 
UNIT 4 PTRP final Convergence in probability.pptx
UNIT 4 PTRP final Convergence in probability.pptxUNIT 4 PTRP final Convergence in probability.pptx
UNIT 4 PTRP final Convergence in probability.pptx
 
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
1_Introduction + EAM Vocabulary + how to navigate in EAM.pdf
 
Hostel management system project report..pdf
Hostel management system project report..pdfHostel management system project report..pdf
Hostel management system project report..pdf
 
PE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and propertiesPE 459 LECTURE 2- natural gas basic concepts and properties
PE 459 LECTURE 2- natural gas basic concepts and properties
 
Augmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptxAugmented Reality (AR) with Augin Software.pptx
Augmented Reality (AR) with Augin Software.pptx
 
AIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech studentsAIRCANVAS[1].pdf mini project for btech students
AIRCANVAS[1].pdf mini project for btech students
 
Introduction to Geographic Information Systems
Introduction to Geographic Information SystemsIntroduction to Geographic Information Systems
Introduction to Geographic Information Systems
 
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...8th International Conference on Soft Computing, Mathematics and Control (SMC ...
8th International Conference on Soft Computing, Mathematics and Control (SMC ...
 
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptxS1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
S1S2 B.Arch MGU - HOA1&2 Module 3 -Temple Architecture of Kerala.pptx
 
Memory Interfacing of 8086 with DMA 8257
Memory Interfacing of 8086 with DMA 8257Memory Interfacing of 8086 with DMA 8257
Memory Interfacing of 8086 with DMA 8257
 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 

UNIT III NON LINEAR DATA STRUCTURES – TREES

  • 1. CS8391-DATA STRUCTURES Unit - III Dr. A. Kathirvel Professor, Dept of CSE, M N M J E C, Chennai
  • 2. UNIT III NON LINEAR DATA STRUCTURES – TREES  Tree ADT – tree traversals – Binary Tree ADT – expression trees – applications of trees – binary search tree ADT –Threaded Binary Trees- AVL Trees – B-Tree – B+ Tree – Heap – Applications of heap.  TEXT BOOKS: 1. Mark Allen Weiss, “Data Structures and Algorithm Analysis in C”, 2nd Edition, Pearson Education,1997. 2. Reema Thareja, “Data Structures Using C”, Second Edition, Oxford University Press, 2011 29 June 2018 2 MNMJEC, Chennai - 600 097
  • 3. 29 June 2018MNMJEC, Chennai - 600 097 3 Topics  Types of Data Structures  Examples for each type  Tree Data Structure  Basic Terminology  Tree ADT  Traversal Algorithms  Binary Trees  Binary Tree Representations  Binary Tree ADT  Binary Tree Traversals
  • 4. 29 June 2018MNMJEC, Chennai - 600 097 4 Types of Data Structure
  • 5. 29 June 2018MNMJEC, Chennai - 600 097 5 Linear Data Structures  In linear data structure, member elements form a sequence. Such linear structures can be represented in memory by using one of the two basic strategies  By having the linear relationship between the elements represented by means of sequential memory locations. These linear structures are called arrays. By having relationship between the elements represented by pointers. These structures are called linked lists.
  • 6. 29 June 2018MNMJEC, Chennai - 600 097 6 When to use them  Arrays are useful when number of elements to be stored is fixed.  Operations like traversal searching and sorting can easily be performed on arrays.  On the other hand, linked lists are useful when the number of data items in the collection are likely to change.
  • 7. 29 June 2018MNMJEC, Chennai - 600 097 7 Nonlinear Data Structures  In nonlinear data structures, data elements are not organized in a sequential fashion. A data item in a nonlinear data structure could be attached to several other data elements to reflect a special relationship among them and all the data items cannot be traversed in a single run.  Data structures like multidimensional arrays, trees and graphs are some examples of widely used nonlinear data structures.
  • 8. 29 June 2018MNMJEC, Chennai - 600 097 8 Examples  A Multidimensional Array is simply a collection of one- dimensional arrays.  A Tree is a data structure that is made up of a set of linked nodes, which can be used to represent a hierarchical relationship among data elements.  A Graph is a data structure that is made up of a finite set of edges and vertices. Edges represent connections or relationships among vertices that stores data elements.
  • 9. 29 June 2018MNMJEC, Chennai - 600 097 9 Difference  Main difference between linear and nonlinear data structures lie in the way they organize data elements.  In linear data structures, data elements are organized sequentially and therefore they are easy to implement in the computer’s memory.  In nonlinear data structures, a data element can be attached to several other data elements to represent specific relationships that exist among them.
  • 10. 29 June 2018MNMJEC, Chennai - 600 097 10 Difficult to Implement  Due to this nonlinear structure, they might be difficult to implement in computer’s linear memory compared to implementing linear data structures.  Selecting one data structure type over the other should be done carefully by considering the relationship among the data elements that needs to be stored.
  • 11. 29 June 2018MNMJEC, Chennai - 600 097 11 A Specific Example  Imagine that you are hired by company XYZ to organize all of their records into a computer database.  The first thing you are asked to do is create a database of names with all the company's management and employees.  To start your work, you make a list of everyone in the company along with their position and other details.
  • 12. 29 June 2018MNMJEC, Chennai - 600 097 12 Employees Table
  • 13. 29 June 2018MNMJEC, Chennai - 600 097 13 Disadvantages of Tables  But this list only shows one view of the company. You also want your database to represent the relationships between management and employees at XYZ.  Although your list contains both name and position, it does not tell you which managers are responsible for which workers and so on.  After thinking about the problem for a while, you decide that a tree diagram is a much better structure for showing the work relationships at XYZ.
  • 14. 29 June 2018MNMJEC, Chennai - 600 097 14 Better Representation
  • 15. 29 June 2018MNMJEC, Chennai - 600 097 15 Comparison  These two diagrams are examples of different data structures.  In one of the data structures, your data is organized into a list. This is very useful for keeping the names of the employees in alphabetical order so that we can locate the employee's record very quickly.  However, this structure is not very useful for showing the relationships between employees. A tree structure is much better suited for this purpose.
  • 16. 29 June 2018MNMJEC, Chennai - 600 097 16 Tree Data Structure  A Tree is a nonlinear data structure that models a hierarchical organization.  The characteristic features are that each element may have several successors (called its “children”) and every element except one (called the “root”) has a unique predecessor (called its “parent”).  Trees are common in computer science: Computer file systems are trees, the inheritance structure for C++/Java classes is a tree.
  • 17. 29 June 2018MNMJEC, Chennai - 600 097 17 What is a Tree ?  In Computer Science, a tree is an abstract model of a hierarchical structure  A tree consists of nodes with a parent-child relation  Applications:  Organization Charts  File Systems  Programming Environment
  • 18. 29 June 2018MNMJEC, Chennai - 600 097 18 Tree Definition  Here is the recursive definition of an (unordered) tree:  A tree is a pair (r, S), where r is a node and S is a set of disjoint trees, none of which contains r.  The node r is called the root of the tree T, and the elements of the set S are called its subtrees.  The set S, of course, may be empty.  The elements of a tree are called its nodes.
  • 19. 29 June 2018MNMJEC, Chennai - 600 097 19 Root, Parent and Children  If T = (x, S) is a tree, then  x is the root of T and  S is its set of subtrees S = {T1, T2, T3, . . ., Tn}.  Each subtree Tj is itself a tree with its own root rj .  In this case, we call the node r the parent of each node rj, and we call the rj the children of r. In general.
  • 20. 29 June 2018MNMJEC, Chennai - 600 097 20 Basic Terminology  A node with no children is called a leaf. A node with at least one child is called an internal node.  The Node having further sub-branches is called parent node.  Every node c other than the root is connected by an edge to some one other node p called the parent of c.  We also call c a child of p.
  • 21. 29 June 2018 MNMJEC, Chennai - 600 097 21 An Example  n1 is the parent of n2 ,n3 and n4, while n2 is the parent of n5 and n6. Said another way, n2, n3, and n4 are children of n1, while n5 and n6 are children of n2.
  • 22. 29 June 2018MNMJEC, Chennai - 600 097 22 Connected Tree  A tree is connected in the sense that if we start at any node n other than the root, move to the parent of n, to the parent of the parent of n, and so on, we eventually reach the root of the tree.  For instance, starting at n7, we move to its parent, n4, and from there to n4’s parent, which is the root, n1.
  • 23. 29 June 2018MNMJEC, Chennai - 600 097 23 Ancestors and Descendants  The parent-child relationship can be extended naturally to ancestors and descendants.  Informally, the ancestors of a node are found by following the unique path from the node to its parent, to its parent’s parent, and so on.  The descendant relationship is the inverse of the ancestor relationship, just as the parent and child relationships are inverses of each other.
  • 24. 29 June 2018MNMJEC, Chennai - 600 097 24 Path and Path Length  More formally, suppose m1,m2, . . . ,mk is a sequence of nodes in a tree such that m1 is the parent of m2, which is the parent of m3, and so on, down to mk−1, which is the parent of mk. Then m1,m2, . . . ,mk is called a path from m1 to mk in the tree. The path length or length of the path is k −1, one less than the number of nodes on the path.
  • 25. 29 June 2018MNMJEC, Chennai - 600 097 25 In our Example  n1, n2, n6 is a path of length 2 from the root n1 to the node n6.
  • 26. 29 June 2018MNMJEC, Chennai - 600 097 26 Height and Depth  In a tree, the height of a node n is the length of a longest path from n to a leaf. The height of the tree is the height of the root.  The depth, or level, of a node n is the length of the path from the root to n.
  • 27. 29 June 2018MNMJEC, Chennai - 600 097 27 In our Example  node n1 has height 2, n2 has height 1, and leaf n3 has height 0. In fact, any leaf has height 0. The height of the tree is 2. The depth of n1 is 0, the depth of n2 is 1, and the depth of n5 is 2.
  • 28. 29 June 2018MNMJEC, Chennai - 600 097 28 Other Terms  The size of a tree is the number of nodes it contains.  The total number of subtrees attached to that node is called the degree of the node.  Degree of the Tree is nothing but the maximum degree in the tree.  The nodes with common parent are called siblings or brothers.
  • 29. 29 June 2018MNMJEC, Chennai - 600 097 29 Degree
  • 30. 29 June 2018MNMJEC, Chennai - 600 097 30 Degree of the Tree
  • 31. 29 June 2018MNMJEC, Chennai - 600 097 31 Siblings
  • 32. 29 June 2018MNMJEC, Chennai - 600 097 32 Terminology Explained
  • 33. 29 June 2018MNMJEC, Chennai - 600 097 33 Another Example
  • 34. 29 June 2018MNMJEC, Chennai - 600 097 34 Subtrees
  • 35. 29 June 2018MNMJEC, Chennai - 600 097 35 Binary Tree  A binary tree is a tree in which no node can have more than two subtrees. In other words, a node can have zero, one or two subtrees.
  • 36. 29 June 2018MNMJEC, Chennai - 600 097 36 Tree ADT  The tree ADT stores elements at positions, which are defined relative to neighboring positions.  Positions in a tree are its nodes, and the neighboring positions satisfy the parent-child relationships that define a valid tree.  Tree nodes may store arbitrary objects.
  • 37. 29 June 2018MNMJEC, Chennai - 600 097 37 Methods of a Tree ADT  As with a list position, a position object for a tree supports the method: element() : that returns the object stored at this position (or node).  The tree ADT supports four types of methods:  Accessor Methods  Generic Methods  Query Methods  Update Methods
  • 38. 29 June 2018MNMJEC, Chennai - 600 097 38 Accessor Methods  We use positions to abstract nodes. The real power of node positions in a tree comes from the accessor methods of the tree ADT that return and accept positions, such as the following:  root(): Return the position of the tree’s root; an error occurs if the tree is empty.  parent(p): Return the position of the parent of p; an error occurs if p is the root.  children(p): Return an iterable collection containing the children of node p.  Iterable - you can step through (i.e. iterate) the object as a collection
  • 39. 29 June 2018MNMJEC, Chennai - 600 097 39 Make a note of it  If a tree T is ordered, then the iterable collection, children(p), stores the children of p in their linear order.  If p is an external node, then children(p) is empty.  Any method that takes a position as argument should generate an error condition if that position is invalid.
  • 40. 29 June 2018MNMJEC, Chennai - 600 097 40 Generic Methods  Tree ADT also supports the following Generic Methods:  size(): Return the number of nodes in the tree.  isEmpty(): Test whether the tree has any nodes or not.  Iterator(): Return an iterator of all the elements stored at nodes of the tree.  positions(): Return an iterable collection of all the nodes of the tree.
  • 41. 29 June 2018MNMJEC, Chennai - 600 097 41 Query Methods  In addition to the above fundamental accessor methods, the tree ADT also supports the following Boolean query methods:  isInternal(p): Test whether node p is an internal node  isExternal(p): Test whether node p is an external node  isRoot(p): Test whether node p is the root node (These methods make programming with tree easier and more readable, since we can use them in the conditionals of if -statements and while -loops, rather than using a non-intuitive conditional).
  • 42. 29 June 2018MNMJEC, Chennai - 600 097 42 Update Methods  The tree ADT also supports the following update method:  replace(p, e): Replace with e and return the element stored at node p. (Additional update methods may be defined by data structures implementing the tree ADT)
  • 43. 29 June 2018MNMJEC, Chennai - 600 097 43 Tree ADT Exceptions  An interface for the tree ADT uses the following exceptions to indicate error conditions:  InvalidPositionException: This error condition may be thrown by any method taking a position as an argument to indicate that the position is invalid.  BoundaryViolationException: This error condition may be thrown by method parent() if it’s called on the root.  EmptyTreeException: This error condition may be thrown by method root() if it’s called on an empty tree.
  • 44. 29 June 2018MNMJEC, Chennai - 600 097 44 Traversal Algorithms  A traversal (circumnavigation) algorithm is a method for processing a data structure that applies a given operation to each element of the structure.  For example, if the operation is to print the contents of the element, then the traversal would print every element in the structure.  The process of applying the operation to an element is called visiting the element. So executing the traversal algorithm causes each element in the structure to be visited.
  • 45. 29 June 2018MNMJEC, Chennai - 600 097 45 Level Order Traversal  The level order traversal algorithm visits the root, then visits each element on the first level, then visits each element on the second level, and so forth, each time visiting all the elements on one level before going down to the next level.  If the tree is drawn in the usual manner with its root at the top and leaves near the bottom, then the level order pattern is the same left-to-right top-to- bottom pattern that you follow to read English text.
  • 46. 29 June 2018MNMJEC, Chennai - 600 097 46 Level Order Example
  • 47. 29 June 2018MNMJEC, Chennai - 600 097 47 Level order Traversal - Algorithm  To traverse a nonempty ordered tree: 1. Initialize a queue. 2. Enqueue the root. 3. Repeat steps 4–6 until the queue is empty. 4. Dequeue node x from the queue. 5. Visit x. 6. Enqueue all the children of x in order.
  • 48. 29 June 2018MNMJEC, Chennai - 600 097 48 Preorder Traversal The preorder traversal of the tree shown above would visit the nodes in this order: a, b, e, h, i, f, c, d, g, j, k, l, m. Note that the preorder traversal of a tree can be obtained by circumnavigating the tree, beginning at the root and visiting each node the first time it is encountered on the left.
  • 49. 29 June 2018MNMJEC, Chennai - 600 097 49 Preorder Traversal - Algorithm  To traverse a nonempty ordered tree: 1. Visit the root. 2. Do a recursive preorder traversal of each subtree in order.  The postorder traversal algorithm does a postorder traversal recursively to each subtree before visiting the root.
  • 50. 29 June 2018MNMJEC, Chennai - 600 097 50 Binary Trees  A binary tree is either the empty set or a triple T = (x, L, R), where x is a node and L and R are disjoint binary trees, neither of which contains x.  The node x is called the root of the tree T, and the subtrees L and R are called the left subtree and the right subtree of T rooted at x.
  • 51. 29 June 2018MNMJEC, Chennai - 600 097 51 Binary Tree
  • 52. 29 June 2018MNMJEC, Chennai - 600 097 52 Terminologies  The definitions of the terms size, path, length of a path, depth of a node, level, height, interior node, ancestor, descendant, and subtree are the same for binary trees as for general trees.
  • 53. 29 June 2018MNMJEC, Chennai - 600 097 53 Trees and Binary Trees - Difference  It is important to understand that while binary trees require us to distinguish whether a child is either a left child or a right child, ordinary trees require no such distinction.  There is another technical difference. While trees are defined to have at least one node, it is convenient to include the empty tree, the tree Empty tree with no nodes, among the binary trees.
  • 54. 29 June 2018MNMJEC, Chennai - 600 097 54 Difference Continued  That is, binary trees are not just trees all of whose nodes have two or fewer children.  Not only are the two trees in the above Figure are different from each other, but they have no relation to the ordinary tree consisting of a root and a single child of the root:
  • 55. 29 June 2018MNMJEC, Chennai - 600 097 55 Five binary trees with three nodes
  • 56. 29 June 2018MNMJEC, Chennai - 600 097 56 Full and Complete Binary Trees  A binary tree is said to be full if all its leaves are at the same level and every interior node has two children.  A complete binary tree is either a full binary tree or one that is full except for a segment of missing leaves on the right side of the bottom level.
  • 57. 29 June 2018MNMJEC, Chennai - 600 097 57 Full and Complete Binary Trees
  • 58. 29 June 2018MNMJEC, Chennai - 600 097 58 Full Binary Tree
  • 59. 29 June 2018MNMJEC, Chennai - 600 097 59 Complete Binary Tree
  • 60. 29 June 2018MNMJEC, Chennai - 600 097 60 Full Binary Trees  The full binary tree of height h has l = 2h leaves and m = 2h – 1 internal nodes.  The full binary tree of height h has a total of n = 2h+1 – 1 nodes.  The full binary tree with n nodes has height h = lg(n+1) – 1.
  • 61. 29 June 2018MNMJEC, Chennai - 600 097 61 Complete Binary Tree  In a complete binary tree of height h, h + 1 ≤ n ≤ 2h+1 – 1 and h = └ lg n ┘
  • 62. 29 June 2018MNMJEC, Chennai - 600 097 62 Make a Note  Complete binary trees are important because they have a simple and natural implementation using ordinary arrays.  The natural mapping is actually defined for any binary tree: Assign the number 1 to the root; for any node, if i is its number, then assign 2i to its left child and 2i+1 to its right child (if they exist).  This assigns a unique positive integer to each node. Then simply store the element at node i in a[i], where a[] is an array.
  • 63. 29 June 2018MNMJEC, Chennai - 600 097 63 Binary Tree Representations  If a complete binary tree with n nodes (depth = log n + 1) is represented sequentially, then for any node with index i, 1 ≤ i ≤ n, we have:  parent(i) is at i/2 if i!=1. If i=1, i is at the root and has no parent.  leftChild(i) is at 2i if 2i ≤ n. If 2i > n, then i has noleft child.  rightChild(i) is at 2i+1 if 2i +1 ≤ n. If 2i +1 >n, then i has no right child.
  • 64. 29 June 2018MNMJEC, Chennai - 600 097 64 Array Implementation
  • 65. 29 June 2018MNMJEC, Chennai - 600 097 65 The Disadvantage  Figure above shows the incomplete binary tree and the natural mapping of its nodes into an array which leaves some gaps.
  • 66. 29 June 2018MNMJEC, Chennai - 600 097 66 Linked List Implementation typedef struct tnode *ptnode; typedef struct tnode { int data; ptnode left, right; };
  • 67. 29 June 2018MNMJEC, Chennai - 600 097 67 Linked List Implementation
  • 68. 29 June 2018MNMJEC, Chennai - 600 097 68 Include One more Pointer  A natural way to implement a tree T is to use a linked structure, where we represent each node p of T by a position object with the following fields:  A link to the parent of p, A link to the LeftChild named Left, a link to the RightChild named Right and the Data. Parent Data Left Right
  • 69. 29 June 2018MNMJEC, Chennai - 600 097 69 Array Implementation  Advantages  Direct Access  Finding the Parent / Children is fast  Disadvantages  Wastage of memory  Insertion and Deletion will be costlier  Array size and depth
  • 70. 29 June 2018MNMJEC, Chennai - 600 097 70 Linked List Implementation  Advantages  No wastage of memory  Insertion and Deletion will be easy  Disadvantages  Does not provide direct access  Additional space in each node.
  • 71. 29 June 2018MNMJEC, Chennai - 600 097 71 Binary Tree ADT  The Binary Tree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADT, in addition to that it supports the following additional accessor methods:  position left(p): return the left child of p, an error condition occurs if p has no left child.  position right(p): return the right child of p, an error condition occurs if p has no right child.  boolean hasLeft(p): test whether p has a left child  boolean hasRight(p): test whether p has a right child
  • 72. 29 June 2018MNMJEC, Chennai - 600 097 72 Binary Tree ADT (Cont.)  Update methods may be defined by data structures implementing the Binary Tree ADT.  Since Binary trees are ordered trees, the iterable collection returned by method chilrden(p) (inherited from the Tree ADT), stores the left child of p before the right child of p.
  • 73. 29 June 2018MNMJEC, Chennai - 600 097 73 Binary Tree Traversals  The three traversal algorithms that are used for general trees (see Chapter 10) apply to binary trees as well: the preorder traversal, the postorder traversal, and the level order traversal.  In addition, binary trees support a fourth traversal algorithm: the inorder traversal. These four traversal algorithms are given next.
  • 74. 29 June 2018MNMJEC, Chennai - 600 097 74 Level Order Traversal  To traverse a nonempty binary tree: 1. Initialize a queue. 2. Enqueue the root. 3. Repeat steps 4–7 until the queue is empty. 4. Dequeue a node x from the queue. 5. Visit x. 6. Enqueue the left child of x if it exists. 7. Enqueue the right child of x if it exists.
  • 75. 29 June 2018MNMJEC, Chennai - 600 097 75 Level Order
  • 76. 29 June 2018MNMJEC, Chennai - 600 097 76 Preorder Traversal  To traverse a nonempty binary tree: 1. Visit the root. 2. If the left subtree is nonempty, do a preorder traversal on it. 3. If the right subtree is nonempty, do a preorder traversal on it.
  • 77. 29 June 2018MNMJEC, Chennai - 600 097 77 Preorder
  • 78. 29 June 2018MNMJEC, Chennai - 600 097 78 Postorder Traversal  To traverse a nonempty binary tree: 1. If the left subtree is nonempty, do a postorder traversal on it. 2. If the right subtree is nonempty, do a postorder traversal on it. 3. Visit the root.
  • 79. 29 June 2018MNMJEC, Chennai - 600 097 79 Postorder
  • 80. 29 June 2018MNMJEC, Chennai - 600 097 80 Inorder Traversal  To traverse a nonempty binary tree: 1. If the left subtree is nonempty, do a preorder traversal on it. 2. Visit the root. 3. If the right subtree is nonempty, do a preorder traversal on it.
  • 81. 29 June 2018MNMJEC, Chennai - 600 097 81 Inorder
  • 82. 29 June 2018MNMJEC, Chennai - 600 097 82 Traversal Using Flag  The order in which the nodes are visited during a tree traversal can be easily determined by imagining there is a “flag” attached to each node, as follows:  To traverse the tree, collect the flags:
  • 83. 29 June 2018MNMJEC, Chennai - 600 097 83 Inorder and Postorder
  • 84. 29 June 2018MNMJEC, Chennai - 600 097 84 Topics  Binary Trees  Binary Tree Representations  Binary Tree ADT  Binary Tree Traversals  Algebraic Expressions  Expression Trees  Binary Search Tree  Binary Search Property  Operations on BST
  • 85. 29 June 2018MNMJEC, Chennai - 600 097 85 Full and Complete Binary Trees  A binary tree is said to be full if all its leaves are at the same level and every interior node has two children.  A complete binary tree is either a full binary tree or one that is full except for a segment of missing leaves on the right side of the bottom level.
  • 86. 29 June 2018MNMJEC, Chennai - 600 097 86 Full and Complete Binary Trees
  • 87. 29 June 2018MNMJEC, Chennai - 600 097 87 Full Binary Tree
  • 88. 29 June 2018MNMJEC, Chennai - 600 097 88 Complete Binary Tree
  • 89. 29 June 2018MNMJEC, Chennai - 600 097 89 Full Binary Trees  The full binary tree of height h has l = 2h leaves and m = 2h – 1 internal nodes.  The full binary tree of height h has a total of n = 2h+1 – 1 nodes.  The full binary tree with n nodes has height h = lg(n+1) – 1.
  • 90. 29 June 2018MNMJEC, Chennai - 600 097 90 Complete Binary Tree  In a complete binary tree of height h, h + 1 ≤ n ≤ 2h+1 – 1 and h = └ lg n ┘
  • 91. 29 June 2018MNMJEC, Chennai - 600 097 91 Make a Note  Complete binary trees are important because they have a simple and natural implementation using ordinary arrays.  The natural mapping is actually defined for any binary tree: Assign the number 1 to the root; for any node, if i is its number, then assign 2i to its left child and 2i+1 to its right child (if they exist).  This assigns a unique positive integer to each node. Then simply store the element at node i in a[i], where a[] is an array.
  • 92. 29 June 2018MNMJEC, Chennai - 600 097 92 Binary Tree Representations  If a complete binary tree with n nodes (depth = log n + 1) is represented sequentially, then for any node with index i, 1 ≤ i ≤ n, we have:  parent(i) is at i/2 if i!=1. If i=1, i is at the root and has no parent.  leftChild(i) is at 2i if 2i ≤ n. If 2i > n, then i has noleft child.  rightChild(i) is at 2i+1 if 2i +1 ≤ n. If 2i +1 >n, then i has no right child.
  • 93. 29 June 2018MNMJEC, Chennai - 600 097 93 Array Implementation
  • 94. 29 June 2018MNMJEC, Chennai - 600 097 94 The Disadvantage  Figure above shows the incomplete binary tree and the natural mapping of its nodes into an array which leaves some gaps.
  • 95. 29 June 2018MNMJEC, Chennai - 600 097 95 Linked List Implementation typedef struct tnode *ptnode; typedef struct tnode { int data; ptnode left, right; };
  • 96. 29 June 2018MNMJEC, Chennai - 600 097 96 Linked List Implementation
  • 97. 29 June 2018MNMJEC, Chennai - 600 097 97 Include One more Pointer  A natural way to implement a tree T is to use a linked structure, where we represent each node p of T by a position object with the following fields:  A link to the parent of p, A link to the LeftChild named Left, a link to the RightChild named Right and the Data. Parent Data Left Right
  • 98. 29 June 2018MNMJEC, Chennai - 600 097 98 Array Implementation  Advantages  Direct Access  Finding the Parent / Children is fast  Disadvantages  Wastage of memory  Insertion and Deletion will be costlier  Array size and depth
  • 99. 29 June 2018MNMJEC, Chennai - 600 097 99 Linked List Implementation  Advantages  No wastage of memory  Insertion and Deletion will be easy  Disadvantages  Does not provide direct access  Additional space in each node.
  • 100. 29 June 2018MNMJEC, Chennai - 600 097 100 Binary Tree ADT  The Binary Tree ADT extends the Tree ADT, i.e., it inherits all the methods of the Tree ADT, in addition to that it supports the following additional accessor methods:  position left(p): return the left child of p, an error condition occurs if p has no left child.  position right(p): return the right child of p, an error condition occurs if p has no right child.  boolean hasLeft(p): test whether p has a left child  boolean hasRight(p): test whether p has a right child
  • 101. 29 June 2018MNMJEC, Chennai - 600 097 101 Binary Tree ADT (Cont.)  Update methods may be defined by data structures implementing the Binary Tree ADT.  Since Binary trees are ordered trees, the iterable collection returned by method chilrden(p) (inherited from the Tree ADT), stores the left child of p before the right child of p.
  • 102. 29 June 2018MNMJEC, Chennai - 600 097 102 Binary Tree Traversals  The three traversal algorithms that are used for general trees (see Chapter 10) apply to binary trees as well: the preorder traversal, the postorder traversal, and the level order traversal.  In addition, binary trees support a fourth traversal algorithm: the inorder traversal. These four traversal algorithms are given next.
  • 103. 29 June 2018MNMJEC, Chennai - 600 097 103 Level Order Traversal  To traverse a nonempty binary tree: 1. Initialize a queue. 2. Enqueue the root. 3. Repeat steps 4–7 until the queue is empty. 4. Dequeue a node x from the queue. 5. Visit x. 6. Enqueue the left child of x if it exists. 7. Enqueue the right child of x if it exists.
  • 104. 29 June 2018MNMJEC, Chennai - 600 097 104 Level Order
  • 105. 29 June 2018MNMJEC, Chennai - 600 097 105 Preorder Traversal  To traverse a nonempty binary tree: 1. Visit the root. 2. If the left subtree is nonempty, do a preorder traversal on it. 3. If the right subtree is nonempty, do a preorder traversal on it.
  • 106. 29 June 2018MNMJEC, Chennai - 600 097 106 Preorder
  • 107. 29 June 2018MNMJEC, Chennai - 600 097 107 Postorder Traversal  To traverse a nonempty binary tree: 1. If the left subtree is nonempty, do a postorder traversal on it. 2. If the right subtree is nonempty, do a postorder traversal on it. 3. Visit the root.
  • 108. 29 June 2018MNMJEC, Chennai - 600 097 108 Postorder
  • 109. 29 June 2018MNMJEC, Chennai - 600 097 109 Inorder Traversal  To traverse a nonempty binary tree: 1. If the left subtree is nonempty, do a preorder traversal on it. 2. Visit the root. 3. If the right subtree is nonempty, do a preorder traversal on it.
  • 110. 29 June 2018MNMJEC, Chennai - 600 097 110 Inorder
  • 111. 29 June 2018MNMJEC, Chennai - 600 097 111 Traversal Using Flag  The order in which the nodes are visited during a tree traversal can be easily determined by imagining there is a “flag” attached to each node, as follows:  To traverse the tree, collect the flags:
  • 112. 29 June 2018MNMJEC, Chennai - 600 097 112 Inorder and Postorder
  • 113. 29 June 2018MNMJEC, Chennai - 600 097 113 A Simple Application  A Simple application of trees is to store mathematical expressions in a convenient form. Let's stick for the moment to expressions made up of numbers and the operators +, -, *, and /.  We will refer to a tree of this type as an Expression Tree
  • 114. 29 June 2018MNMJEC, Chennai - 600 097 114 Algebraic Expressions - Introduction  An algebraic expression is a legal combination of operands and operators. Operand is the quantity (unit of data) on which a mathematical operation is performed.  Operand may be a variable like x, y, z or a constant like 5, 4,0,9,1 etc. Operator is a symbol which signifies a mathematical or logical operation between the operands.  We can write an example of expression as x+y*z.
  • 115. 29 June 2018MNMJEC, Chennai - 600 097 115 Algebraic Expressions  Note the phrase "LEGAL combination" in the definition of an Algebraic Expression, in aforementioned example of expression x+y*z, the operands x , y, z and the operators +,* form some legal combination.  Take another example +xyz*, in this expression operators and operands do not make any LEGAL combination; this expression is not a valid algebraic expression.
  • 116. 29 June 2018MNMJEC, Chennai - 600 097 116 Algebraic Expressions (2)  An Algebraic Expression can be represented using three different notations:  INFIX: From our school times we have been familiar with the expressions in which operands surround the operator, e.g. x+y, 6*3 etc this way of writing the Expressions is called infix notation.  PREFIX: Prefix notation also Known as Polish notation, is a symbolic logic invented by Polish mathematician in 1920's. In the prefix notation, as the name only suggests, operator comes before the operands, e.g. +xy, *+xyz etc.  POSTFIX: Postfix notation is also Known as Reverse Polish notation. They are different from the infix and prefix notations in the sense that in the postfix notation, the operator comes after the operands, e.g. xy+, xyz+* etc.
  • 117. 29 June 2018MNMJEC, Chennai - 600 097 117 Algebraic Expressions (3)  Now, the obvious question that comes in our mind is, Why use these weird looking PREFIX and POSTFIX notations when we have a sweet and simple INFIX notation?  To our surprise INFIX notations are not as simple as they seem specially while evaluating them. To evaluate an infix expression we need to consider Operators' Priority and Associativity.
  • 118. 29 June 2018MNMJEC, Chennai - 600 097 118 Algebraic Expressions (3)  Due to the above mentioned problem of considering operators' Priority and Associativity while evaluating an expression using infix notation, we use prefix and postfix notations.  Both prefix and postfix notations have an advantage over infix that while evaluating an expression in prefix or postfix form we need not consider the Priority and Associativity of the operators. Both prefix and postfix notations make Expression Evaluation a lot easier.
  • 119. 29 June 2018MNMJEC, Chennai - 600 097 119 How to Represent ?  Arithmetic expressions can be represented by labeled trees, and it is often quite helpful to visualize expressions as trees.  In fact, expression trees, as they are sometimes called, specify the association of an expression’s operands and its operators in a uniform way, regardless of whether the association is required by the placement of parentheses in the expression or by the precedence and associativity rules for the operators involved.
  • 120. 29 June 2018MNMJEC, Chennai - 600 097 120 General Idea  The general idea is that each time we form a larger expression by applying an operator to smaller expressions, we create a new node, labeled by that operator.  The new node becomes the root of the tree for the large expression, and its children are the roots of the trees for the smaller expressions.
  • 121. 29 June 2018MNMJEC, Chennai - 600 097 121 The Rule  For instance, we can define the labeled trees for arithmetic expressions with the binary operators:  BASIS. A single atomic operand (e.g., a variable, an integer, or a real) is an expression, and its tree is a single node, labeled by that operand.  INDUCTION. If E1 and E2 are expressions represented by trees T1 and T2, respectively, then the expression (E1 + E2) is represented by the tree of whose root is labeled +. This root has two children, which are the roots of T1 and T2, respectively, in that order.
  • 122. 29 June 2018MNMJEC, Chennai - 600 097 122 Apply the Rule
  • 123. 29 June 2018MNMJEC, Chennai - 600 097 123 Examples
  • 124. 29 June 2018MNMJEC, Chennai - 600 097 124 Expression Tree  Consider the expression 2*3/(2-1)+5*(4-1). This expression is made up of two subexpressions, 2*3/(2- 1) and 5*(4-1), combined with the operator "+".  When the expression is represented as a binary tree, the root node holds the operator +, while the subtrees of the root node represent the subexpressions 2*3/(2- 1) and 5*(4-1).
  • 125. 29 June 2018MNMJEC, Chennai - 600 097 125 Expression Tree (2)  Every node in the tree holds either a number or an operator. A node that holds a number is a leaf node of the tree.  A node that holds an operator has two subtrees representing the operands to which the operator applies. The tree is shown in the next Slide.
  • 126. 29 June 2018MNMJEC, Chennai - 600 097 126 Expression Tree (3)
  • 127. 29 June 2018MNMJEC, Chennai - 600 097 127 Expression Tree - Evaluation  Given an expression tree, it's easy to find the value of the expression that it represents. Each node in the tree has an associated value.  If the node is a leaf node, then its value is simply the number that the node contains. If the node contains an operator, then the associated value is computed by first finding the values of its child nodes and then applying the operator to those values.
  • 128. 29 June 2018MNMJEC, Chennai - 600 097 128 Expression Tree – Evaluation (2)  The process is shown by the upward-directed arrows in the illustration. The value computed for the root node is the value of the expression as a whole. There are other uses for expression trees. For example, a postorder traversal of the tree will output the postfix form of the expression.
  • 129. 29 June 2018MNMJEC, Chennai - 600 097 129 Expression Tree - Evaluation (3)
  • 130. 29 June 2018MNMJEC, Chennai - 600 097 130 Binary Search Trees  Search trees are data structures that support many dynamic-set operations, including SEARCH, MINIMUM, MAXIMUM, PREDECESSOR, SUCCESSOR, INSERT, and DELETE.  Thus, a search tree can be used both as a dictionary and as a priority queue.  One good way to implement a dictionary is with a binary search tree, which is a kind of labeled binary tree.
  • 131. 29 June 2018MNMJEC, Chennai - 600 097 131 Binary Search Tree Property  A binary search tree (BST) is a labeled binary tree in which the following property holds at every node x in the tree:  all nodes in the left subtree of x have labels less than the label of x, and all nodes in the right subtree have labels greater than the label of x. This property is called the binary search tree property.
  • 132. 29 June 2018MNMJEC, Chennai - 600 097 132 An Example
  • 133. 29 June 2018MNMJEC, Chennai - 600 097 133 Some More Examples
  • 134. 29 June 2018MNMJEC, Chennai - 600 097 134 Looking Up an Element  Suppose we want to look for an element x that may be in a dictionary represented by a binary search tree T . If we compare x with the element at the root of T , we can take advantage of the BST property to locate x quickly or determine that x is not present.  If x is at the root, we are done. Otherwise, if x is less than the element at the root, x could be found only in the left subtree (by the BST property); and if x is greater, then it could be only in the right subtree (again, because of the BST property).
  • 135. 29 June 2018MNMJEC, Chennai - 600 097 135 A Recursive Algorithm  We can express the lookup operation by the following recursive algorithm.  BASIS. If the tree T is empty, then x is not present. If T is not empty, and x appears at the root, then x is present.  INDUCTION. If T is not empty but x is not at the root, let y be the element at the root of T . If x < y look up x only in the left subtree of the root, and if x > y look up x only in the right subtree of y. The BST property guarantees that x cannot be in the subtree we do not search.
  • 136. 29 June 2018MNMJEC, Chennai - 600 097 136 Recursive Procedure  TREE-SEARCH(x, k) 1 if x = NIL or k = key[x] 2 then return x 3 if k < key[x] 4 then return TREE-SEARCH(left[x], k) 5 else return TREE-SEARCH(right[x], k)
  • 137. 29 June 2018MNMJEC, Chennai - 600 097 137 Iterative Procedure  The same procedure can be written iteratively by “unrolling” the recursion with while loop. [Efficient on most computers]  ITERATIVE-TREE-SEARCH(x, k) 1 while x ≠ NIL and k ≠ key[x] 2 do if k < key[x] 3 then x ← left[x] 4 else x ← right[x] 5 return x
  • 138. 29 June 2018MNMJEC, Chennai - 600 097 138 Minimum  An element in a binary search tree whose key is a minimum can always be found by following left child pointers from the root until a NIL is encountered  TREE-MINIMUM(x) 1 while left[x] ≠ NIL 2 do x ← left[x] 3 return x
  • 139. 29 June 2018MNMJEC, Chennai - 600 097 139 Maximum  The pseudocode for TREE-MAXIMUM is symmetric.  TREE-MAXIMUM(x) 1 while right[x] ≠ NIL 2 do x ← right[x] 3 return x
  • 140. 29 June 2018MNMJEC, Chennai - 600 097 140 Successor and predecessor  Given a node in a binary search tree, it is sometimes important to be able to find its successor in the sorted order determined by an inorder tree walk.  If all keys are distinct, the successor of a node x is the node with the smallest key greater than key[x].  The structure of a binary search tree allows us to determine the successor of a node without ever comparing keys.
  • 141. 29 June 2018MNMJEC, Chennai - 600 097 141 Tree Successor  TREE-SUCCESSOR(x) 1 if right[x] = NIL 2 then return TREE-MINIMUM(right[x]) 3 y ← p[x] 4 while y = NIL and x = right[y] 5 do x ← y 6 y ← p[y] 7 return y
  • 142. 29 June 2018MNMJEC, Chennai - 600 097 142 The Two Cases of TREE-SUCCSSOR  The code for TREE-SUCCESSOR is broken into two cases:  If the right subtree of node x is nonempty, then the successor of x is just the leftmost node in the right subtree, which is found in line 2 by calling TREE-MINIMUM(right[x]).  On the other hand, if the right subtree of node x is empty and x has a successor y, then y is the lowest ancestor of x whose left child is also an ancestor of x
  • 143. 29 June 2018MNMJEC, Chennai - 600 097 143 Example  The successor of the node with key 15 is the node with key 17, since it is the minimum key in the right subtree of 15.  The node with key 13 has no right subtree, and thus its successor is its lowest ancestor whose left child is also an ancestor. In this case, the node with key 15 is its successor.
  • 144. 29 June 2018MNMJEC, Chennai - 600 097 144 Insertion and Deletion  The operations of insertion and deletion cause the dynamic set represented by a binary search tree to change.  The data structure must be modified to reflect this change, but in such a way that the binary-search-tree property continues to hold.  As we shall see, modifying the tree to insert a new element is relatively straightforward, but handling deletion is somewhat more intricate.
  • 145. 29 June 2018MNMJEC, Chennai - 600 097 145 Insertion  To insert a new value v into a binary search tree T , we use the procedure TREEINSERT.  The procedure is passed a node z for which key[z] = v, left[z] = NIL, and right[z] = NIL.  It modifies T and some of the fields of z in such a way that z is inserted into an appropriate position in the tree.
  • 146. 29 June 2018MNMJEC, Chennai - 600 097 146 Tree-Insert Procedure  TREE-INSERT(T, z) 1 y ← NIL 2 x ← root[T] 3 while x ≠ NIL 4 do y ← x 5 if key[z] < key[x] 6 then x ← left[x] 7 else x ← right[x] 8 p[z] ← y 9 if y = NIL 10 then root[T] ← z 11 else if key[z] < key[y] 12 then left[y] ← z 13 else right[y] ← z
  • 147. 29 June 2018MNMJEC, Chennai - 600 097 147 How it Works ?  The pointer x traces the path, and the pointer y is maintained as the parent of x. After initialization, the while loop in lines 3–7 causes these two pointers to move down the tree, going left or right depending on the comparison of key[z] with key[x], until x is set to NIL.  This NIL occupies the position where we wish to place the input item z. Lines 8–13 set the pointers that cause z to be inserted.
  • 148. 29 June 2018MNMJEC, Chennai - 600 097 148 Tree Insert Operation  Inserting an item with key 13 into a binary search tree.  Lightly shaded nodes indicate the path from the root down to the position where the item is inserted.  The dashed line indicates the link in the tree that is added to insert the item.
  • 149. 29 June 2018MNMJEC, Chennai - 600 097 149 Tree Deletion  The procedure for deleting a given node z from a binary search tree takes as an argument a pointer to z. The procedure considers the three cases:  If z has no children, we modify its parent p[z] to replace z with NIL as its child.  If the node has only a single child, we “splice out” z by making a new link between its child and its parent.  Finally, if the node has two children, we splice out z’s successor y, which has no left child and replace z’s key and satellite data with y’s key and satellite data.
  • 150. 29 June 2018MNMJEC, Chennai - 600 097 150 Tree Deletion - Case 1
  • 151. 29 June 2018MNMJEC, Chennai - 600 097 151 Tree Deletion - Case 2
  • 152. 29 June 2018MNMJEC, Chennai - 600 097 152 Tree Deletion - Case 3
  • 153. Questions and Discussion 29 June 2018 153 MNMJEC, Chennai - 600 097