Professional Documents
Culture Documents
ADS Cat 1
ADS Cat 1
Submitted by
ABIRAMI R
2033002
Submitted to
Dr. A. Kannammal
Dr. S. Chandia
Department of Computing
Coimbatore – 641014.
1
INDEX
3
EXERCISE 1
Binary Search Tree Operations
11.12.2023
AIM
To implement insertion, deletion, searching and traversal operations in Binary Search Tree.
CONCEPT
A Binary Search Tree (BST) is a special type of binary tree in which the left child of a node has a value
less than the node’s value and the right child has a value greater than the node’s value. This property is called
the BST property and it makes it possible to efficiently search, insert, and delete elements in the tree. Binary
Search Tree (BST) quickly allows us to maintain a sorted list of numbers. The key operations associated with
BSTs
CONCEPT IMPLEMENTED :
• Insertion:
o Adding a new node with a given key value into the BST while maintaining the BST property.
o Compare the key value with the current node and traverse left or right until finding an
appropriate spot to insert the new node.
• Deletion:
o Removing a node with a specific key value from the BST. It handle different scenarios: a node has
no children, a node has one child or a node has two children.
o Reorganize the tree while maintaining the BST property.
• Search:
o Finding a specific key value within the BST.
o Start from the root node and compare the target key with the current node’s key. Move left or
right in the tree based on the comparison until finding a match or reaching a leaf node.
• Traversal:
o Visiting and processing all the nodes in the BST in a specific order.
o Common traversal methods include Inorder (Left-Parent-Right), Preorder (Parent-Left-Right) and
Postorder (Left-Right-Parent).
APPLICATION
ADVANTAGES
• BST is fast in insertion and deletion when balanced. It is fast with a time complexity of O(log n).
• BST is also for fast searching, with a time complexity of O(log n) for most operations.
• We can also do range queries – find keys between N and M (N <= M).
• BST can automatically sort elements as they are inserted, so the elements are always stored in a sorted
order.
• BST can be easily modified to store additional data or to support other operations. This makes it
flexible.
CODE
5
6
RESULT
7
EXERCISE 2
Application in Binary Search Tree
12.12.2023
AIM
To implement insertion, deletion, searching and traversal operations in Binary Search Tree in BST
Application.
APPLICATION CHOSEN
Keeping track of your food expenses is essential for maintaining a balanced budget and financial well-
being. Utilizing a Binary Search Tree (BST) structure for your food expense tracker ensures efficient and
organized record-keeping. With each expenditure represented as a node in the BST, transactions can be
quickly logged and retrieved, facilitating easy navigation through your spending history. The hierarchical
nature of the BST allows for swift insertion, deletion, and retrieval of data, providing a streamlined and
effective solution for managing your food-related financial activities.
CONCEPT
A Binary Search Tree (BST) is a special type of binary tree in which the left child of a node has a value
less than the node’s value and the right child has a value greater than the node’s value. This property is called
the BST property and it makes it possible to efficiently search, insert, and delete elements in the tree. Binary
Search Tree (BST) quickly allows us to maintain a sorted list of numbers. The key operations associated with
BSTs.
CONCEPT IMPLEMENTED :
• Insertion:
o Adding a new node with a given key value into the BST while maintaining the BST property.
o Compare the key value with the current node and traverse left or right until finding an
appropriate spot to insert the new node.
• Deletion:
o Removing a node with a specific key value from the BST. It handle different scenarios: a node has
no children, a node has one child or a node has two children.
o Reorganize the tree while maintaining the BST property.
• Search:
o Finding a specific key value within the BST.
o Start from the root node and compare the target key with the current node’s key. Move left or
right in the tree based on the comparison until finding a match or reaching a leaf node.
• Traversal:
o Visiting and processing all the nodes in the BST in a specific order.
8
o Common traversal methods include Inorder (Left-Parent-Right), Preorder (Parent-Left-Right) and
Postorder (Left-Right-Parent).
APPLICATION
ADVANTAGES
• BST is fast in insertion and deletion when balanced. It is fast with a time complexity of O(log n).
• BST is also for fast searching, with a time complexity of O(log n) for most operations.
• We can also do range queries – find keys between N and M (N <= M).
• BST can automatically sort elements as they are inserted, so the elements are always stored in a sorted
order.
• BST can be easily modified to store additional data or to support other operations. This makes it
flexible.
CODE
9
10
11
RESULT
12
EXERCISE 3
Special Operations in BST Application - 1
18.12.2023
AIM
To implement special operations like finding the minimum and maximum value node and its level,
finding the third minimum and maximum value node and its level, finding the sum of all numerical value on
the left and right subtree separately, finding the distance between any two given nodes in terms of levels in a
BST Application.
CONCEPT
A Binary Search Tree (BST) is a special type of binary tree in which the left child of a node has a value
less than the node’s value and the right child has a value greater than the node’s value. This property is called
the BST property and it makes it possible to efficiently search, insert, and delete elements in the tree. Binary
Search Tree (BST) quickly allows us to maintain a sorted list of numbers. Various Special operations associated
with BSTs.
CONCEPT IMPLEMENTED :
APPLICATION
ADVANTAGES
• BST is fast in insertion and deletion when balanced. It is fast with a time complexity of O(log n).
• BST is also for fast searching, with a time complexity of O(log n) for most operations.
• We can also do range queries – find keys between N and M (N <= M).
• BST can automatically sort elements as they are inserted, so the elements are always stored in a sorted
order.
• BST can be easily modified to store additional data or to support other operations. This makes it
flexible.
CODE
14
15
16
17
18
RESULT
19
20
21
22
EXERCISE 4
Special Operations in BST Application - 2
26.12.2023
AIM
To implement special operations like deleting all the leaf nodes, counting the total number of nodes,
finding the height of the tree, creating and displaying the right threads of a leaf node and creating and
displaying the left threads of a leaf node in a BST Application.
CONCEPT
A Binary Search Tree (BST) is a special type of binary tree in which the left child of a node has a value
less than the node’s value and the right child has a value greater than the node’s value. This property is called
the BST property and it makes it possible to efficiently search, insert, and delete elements in the tree. Binary
Search Tree (BST) quickly allows us to maintain a sorted list of numbers. Various Special operations associated
with BSTs.
CONCEPT IMPLEMENTED :
APPLICATION
• BST is fast in insertion and deletion when balanced. It is fast with a time complexity of O(log n).
• BST is also for fast searching, with a time complexity of O(log n) for most operations.
• We can also do range queries – find keys between N and M (N <= M).
• BST can automatically sort elements as they are inserted, so the elements are always stored in a sorted
order.
• BST can be easily modified to store additional data or to support other operations. This makes it
flexible.
CODE
24
25
26
27
RESULT
28
29
EXERCISE 5
AVL Tree Operations
08.01.2024
AIM
To implement insertion, deletion, in-order traversal, count the total number of nodes, search for a key
and check if the key is empty in AVL Tree.
CONCEPT
An AVL tree defined as a self-balancing Binary Search Tree (BST) where the difference between
heights of left and right subtrees for any node cannot be more than one. The key operations associated with
AVL Tree.
CONCEPT IMPLEMENTED :
• Insertion
o Insertion in an AVL tree is similar to insertion in a binary search tree. But after inserting an
element, check the balance factor. If a node doesn’t satisfy the balance factor condition, then
we need to fix the AVL properties using left or right rotations:
▪ If there is an imbalance in the left child's right sub-tree, perform a left-right rotation
▪ If there is an imbalance in the left child's left sub-tree, perform a right rotation
▪ If there is an imbalance in the right child's right sub-tree, perform a left rotation
▪ If there is an imbalance in the right child's left sub-tree, perform a right-left rotation
• Deletion
o Deletion in an AVL tree is similar to deletion in a binary search tree. But after deleting an
element, check the balance factor. If any node doesn’t satisfy the balance factor condition, then
we need to fix the AVL properties using left or right rotations:
▪ If there is an imbalance in the left child's right sub-tree, perform a left-right rotation
▪ If there is an imbalance in the left child's left sub-tree, perform a right rotation
▪ If there is an imbalance in the right child's right sub-tree, perform a left rotation
▪ If there is an imbalance in the right child's left sub-tree, perform a right-left rotation
• In-order Traversal
o Visiting and processing all the nodes in the AVL tree which follows Left-Parent-Right pattern.
• Total number of nodes
o Implement an in-order traversal and store it in an array. Size of the array determines the total
number of nodes
• Search for a key
o Finding a specific key value within the BST.
o Start from the root node and compare the target key with the current node’s key. Move left or
right in the tree based on the comparison until finding a match or reaching a leaf node.
• Checking if the tree is empty
30
o To check if an AVL tree is empty, examine whether the root of the tree is null or not.
APPLICATION
• It is used to index huge records in a database and also to efficiently search in that.
• For all types of in-memory collections, including sets and dictionaries, AVL Trees are used.
• Database applications, where insertions and deletions are less common but frequent data lookups are
necessary
• Software that needs optimized search.
• It is applied in corporate areas and storyline games.
ADVANTAGES
CODE
31
32
33
34
35
RESULT
36
37
38
39
EXERCISE 6
Heap Tree Operations
22.01.2024
AIM
To implement insertion, deletion, display the elements in array format, print the children of given node
and print the index of 1st leaf and last non-leaf nodes in Heap Tree.
CONCEPT
Heap data structure is a complete binary tree that satisfies the heap property, where any given node is
• always greater than its child node/s and the key of the root node is the largest among all other nodes.
This property is also called max heap property.
• always smaller than the child node/s and the key of the root node is the smallest among all other
nodes. This property is also called min heap property.
CONCEPT IMPLEMENTED :
• Insertion
o A new element is always inserted at the last child of the original heap. The new element may
now violate the heap property that a heap must satisfy.
o Therefore, an operation known as reheapify upward is performed on the heap.
o If the value is greater (in a max heap) or smaller (in a min heap) it is swapped with its parent.
The process is then continued from the parent node recursively until the heap property is
satisfied or the root node is hit. And also store it in an array.
• Deletion
o An element is always deleted from the root of the heap. After deleting, swap the last node in te
heap to the root. This causes the heap to violate the heap property.
o Similar to inserting an element, an operation known as reheapify downward is performed on
the heap. The value of the root node is first replaced with the largest (or smallest) value
amongst its children. Then the down heap property is repeated from this child again recursively
until we hit the leaf node. And also store it in an array.
• Elements in array format
o Just print the array where max heap or min heap is performed.
• Children of given node
o Given the node, first find the index of the node and store it in variable ‘I’. The left child is
array[2i+1] and the right child is array[2i+2].
• Index of 1st leaf and last non-leaf node
o The last non-leaf node is array[(n/2 – 1)-1].
o If n is even, then the first leaf node is array[n/2] and if n is odd, then the first leaf node is
array[n/2 – 1].
40
APPLICATION
• Heapsort: This is one of the best in-place sorting methods with no quadratic worst-case scenarios. This
is because the minimum or maximum element is always the root of the heap.
• Implementing priority queues: As the highest (or lowest) priority element is always stored at the root
of the heap, they could be accessed quickly.
• Selection algorithms: A heap allows access to the min or max element in constant time, and other
selections (such as median or kth-element) can be done in sub-linear time on data that is in a heap.
• Graph algorithms: By using heaps as internal traversal data structures, run times can be reduced by
polynomial order.
ADVANTAGES
• Efficient insertion and deletion: The heap data structure allows efficient insertion and deletion of
elements. When a new element is added to the heap, it is placed at the bottom of the heap and moved
up to its correct position using the reheapify upward operation. Similarly, when an element is removed
from the heap, it is replaced by the bottom element, and the heap is restructured using the reheapify
downward operation.
• Efficient priority queue: The heap data structure is commonly used to implement a priority queue,
where the highest priority element is always at the top of the heap. The heap allows constant-time
access to the highest priority element, making it an efficient data structure for implementing priority
queues.
• Guaranteed access to the maximum or minimum element: In a max-heap, the top element is always
the maximum element, and in a min-heap, the top element is always the minimum element. This
provides guaranteed access to the maximum or minimum element in the heap, making it useful in
algorithms that require access to the extreme values.
• Space efficiency: The heap data structure requires less memory compared to other data structures,
such as linked lists or arrays, as it stores elements in a complete binary tree structure.
• Heap-sort algorithm: The heap data structure forms the basis for the heap-sort algorithm, which is an
efficient sorting algorithm that has a worst-case time complexity of O(n log n).
CODE
41
42
43
RESULT
44
45
EXERCISE 7
Application of Heap Tree
24.01.2024
AIM
To implement insertion, deletion, display the elements in array format in Heap Application.
APPLICATION CHOSEN
Heap Sort is a comparison-based sorting algorithm implemented using a max heap data structure. The
algorithm begins by building a max heap from the input array, where the root of the heap represents the
maximum element. It repeatedly extracts the maximum element from the heap (the root) and places it at the
end of the array, effectively sorting the array in ascending order. The process continues until the heap is
empty, resulting in a sorted array. Heap Sort has a time complexity of O(n log n) and is an in-place sorting
algorithm.
CONCEPT
Heap data structure is a complete binary tree that satisfies the heap property, where any given node is
• always greater than its child node/s and the key of the root node is the largest among all other nodes.
This property is also called max heap property.
• always smaller than the child node/s and the key of the root node is the smallest among all other
nodes. This property is also called min heap property.
CONCEPT IMPLEMENTED :
• Insertion
o A new element is always inserted at the last child of the original heap. The new element may
now violate the heap property that a heap must satisfy.
o Therefore, an operation known as reheapify upward is performed on the heap.
o If the value is greater (in a max heap) or smaller (in a min heap) it is swapped with its parent.
The process is then continued from the parent node recursively until the heap property is
satisfied or the root node is hit. And also store it in an array.
• Deletion
o An element is always deleted from the root of the heap. After deleting, swap the last node in te
heap to the root. This causes the heap to violate the heap property.
o Similar to inserting an element, an operation known as reheapify downward is performed on
the heap. The value of the root node is first replaced with the largest (or smallest) value
amongst its children. Then the down heap property is repeated from this child again recursively
until we hit the leaf node. And also store it in an array.
• Elements in array format
46
o Just print the array where max heap or min heap is performed.
• Children of given node
o Given the node, first find the index of the node and store it in variable ‘I’. The left child is
array[2i+1] and the right child is array[2i+2].
• Index of 1st leaf and last non-leaf node
o The last non-leaf node is array[(n/2 – 1)-1].
o If n is even, then the first leaf node is array[n/2] and if n is odd, then the first leaf node is
array[n/2 – 1].
APPLICATION
• Heapsort: This is one of the best in-place sorting methods with no quadratic worst-case scenarios. This
is because the minimum or maximum element is always the root of the heap.
• Implementing priority queues: As the highest (or lowest) priority element is always stored at the root
of the heap, they could be accessed quickly.
• Selection algorithms: A heap allows access to the min or max element in constant time, and other
selections (such as median or kth-element) can be done in sub-linear time on data that is in a heap.
• Graph algorithms: By using heaps as internal traversal data structures, run times can be reduced by
polynomial order.
ADVANTAGES
• Efficient insertion and deletion: The heap data structure allows efficient insertion and deletion of
elements. When a new element is added to the heap, it is placed at the bottom of the heap and moved
up to its correct position using the reheapify upward operation. Similarly, when an element is removed
from the heap, it is replaced by the bottom element, and the heap is restructured using the reheapify
downward operation.
• Efficient priority queue: The heap data structure is commonly used to implement a priority queue,
where the highest priority element is always at the top of the heap. The heap allows constant-time
access to the highest priority element, making it an efficient data structure for implementing priority
queues.
• Guaranteed access to the maximum or minimum element: In a max-heap, the top element is always
the maximum element, and in a min-heap, the top element is always the minimum element. This
provides guaranteed access to the maximum or minimum element in the heap, making it useful in
algorithms that require access to the extreme values.
• Space efficiency: The heap data structure requires less memory compared to other data structures,
such as linked lists or arrays, as it stores elements in a complete binary tree structure.
• Heap-sort algorithm: The heap data structure forms the basis for the heap-sort algorithm, which is an
efficient sorting algorithm that has a worst-case time complexity of O(n log n).
47
CODE
48
49
RESULT
50
51
52