Data Structute MCA
Data Structute MCA
(SESSION :- 2023-2025)
PRACTICLE FILE OF DATA
STRUCTURE
SUBMITTED TO :- SUBMITTED BY :-
DR. REENA NAME :- MONIKA
BMU ROHTAk CLASS :- MCA 2ND SEM.
ROLL NO. :-
class BinarySearchTree:
def __init__(self):
self.root = None
class TreeNode:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
# Example usage:
if __name__ == "__main__":
bst = BinarySearchTree()
keys = [7, 4, 9, 2, 5, 8, 11]
target = 5
if bst.search(target):
print(f"\nElement {target} found in the binary search tree.")
else:
print(f"\nElement {target} not found in the binary search tree.")
Output:
Binary Search Tree:
7
/ \
4 9
/\ /\
2 5 8 11
Element 5 found in the binary search tree.
2. Write a program to implement insert operation on binary search
tree.
class TreeNode:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
class BinarySearchTree:
def __init__(self):
self.root = None
def inorder_traversal(self):
self._inorder_recursive(self.root)
# Example usage:
if __name__ == "__main__":
bst = BinarySearchTree()
keys = [7, 4, 9, 2, 5, 8, 11]
Output:
Binary Search Tree after insertion:
2 4 5 7 8 9 11
3. Write a program to perform a Linear search for a given set of integer
values.
# Example usage:
arr = [3, 6, 2, 9, 5, 1, 8]
target = 5
result = linear_search(arr, target)
if result != -1:
print(f"Element {target} found at index {result}")
else:
print(f"Element {target} not found in the list")
Output:
Element 5 found at index 4
4. Write a program to implement delete operation on binary search
tree.
class TreeNode:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
class BinarySearchTree:
def __init__(self):
self.root = None
return node
def inorder_traversal(self):
self._inorder_recursive(self.root)
# Example usage:
if __name__ == "__main__":
bst = BinarySearchTree()
keys = [7, 4, 9, 2, 5, 8, 11]
bst.delete(9)
print("\nBinary Search Tree after deletion of 9:")
bst.inorder_traversal()
Output:
Binary Search Tree before deletion:
2 4 5 7 8 9 11
Binary Search Tree after deletion of 9:
2 4 5 7 8 11
5. Write a program to implement Merge sort for the given list of
integer value.
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
merge_sort(left_half)
merge_sort(right_half)
# Example usage:
arr = [12, 11, 13, 5, 6, 7]
print("Original array:", arr)
merge_sort(arr)
print("Sorted array:", arr)
Output:
Original array: [12, 11, 13, 5, 6, 7]
Sorted array: [5, 6, 7, 11, 12, 13]
6. Write a program to find minimum cost spanning tree using Prim’s
algorithms.
import sys
class Graph:
def __init__(self, vertices):
self.V = vertices
self.graph = [[0 for _ in range(vertices)] for _ in range(vertices)]
for v in range(self.V):
if key[v] < min_val and mst_set[v] == False:
min_val = key[v]
min_index = v
return min_index
def prim_mst(self):
key = [sys.maxsize] * self.V
parent = [None] * self.V
key[0] = 0
mst_set = [False] * self.V
parent[0] = -1
for _ in range(self.V):
u = self.min_key(key, mst_set)
mst_set[u] = True
for v in range(self.V):
if self.graph[u][v] > 0 and mst_set[v] == False and key[v] >
self.graph[u][v]:
key[v] = self.graph[u][v]
parent[v] = u
self.print_mst(parent)
# Example usage:
g = Graph(5)
g.add_edge(0, 1, 2)
g.add_edge(0, 3, 6)
g.add_edge(1, 2, 3)
g.add_edge(1, 3, 8)
g.add_edge(1, 4, 5)
g.add_edge(2, 4, 7)
g.add_edge(3, 4, 9)
Output:
Minimum Spanning Tree using Prim's Algorithm:
Edge Weight
0-1 2
1-2 3
0-3 6
1-4 5
7. Write a program to find minimum cost spanning tree using Kruskal’s
algorithms.
class Graph:
def __init__(self, vertices):
self.V = vertices
self.graph = []
def kruskal_mst(self):
result = []
i=0
e=0
self.graph = sorted(self.graph, key=lambda item: item[2])
parent = []
rank = []
for node in range(self.V):
parent.append(node)
rank.append(0)
if x != y:
e += 1
result.append([u, v, weight])
self.union(parent, rank, x, y)
# Example usage:
g = Graph(4)
g.add_edge(0, 1, 10)
g.add_edge(0, 2, 6)
g.add_edge(0, 3, 5)
g.add_edge(1, 3, 15)
g.add_edge(2, 3, 4)
g.kruskal_mst()
Output:
Minimum Spanning Tree using Kruskal's Algorithm:
Edge Weight
2-3 4
0-3 5
0 - 1 10
8. Write a program to implement Quick sort for the given list of integer
values.
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
left = [x for x in arr[1:] if x <= pivot]
right = [x for x in arr[1:] if x > pivot]
return quick_sort(left) + [pivot] + quick_sort(right)
# Example usage:
arr = [10, 7, 8, 9, 1, 5]
print("Original array:", arr)
sorted_arr = quick_sort(arr)
print("Sorted array:", sorted_arr)
Output:
Original array: [10, 7, 8, 9, 1, 5]
Sorted array: [1, 5, 7, 8, 9, 10]
9. Write a program to sort the elements by using heap sort.
if largest != i:
arr[i], arr[largest] = arr[largest], arr[i]
heapify(arr, n, largest)
def heap_sort(arr):
n = len(arr)
# Example usage:
arr = [12, 11, 13, 5, 6, 7]
print("Original array:", arr)
heap_sort(arr)
print("Sorted array:", arr)
Output:
Original array: [12, 11, 13, 5, 6, 7]
Sorted array: [5, 6, 7, 11, 12, 13]
10. Write a program to implement Search operation on Binary
Search Tree.
class TreeNode:
def __init__(self, key):
self.key = key
self.left = None
self.right = None
class BinarySearchTree:
def __init__(self):
self.root = None
# Example usage:
bst = BinarySearchTree()
keys = [7, 4, 9, 2, 5, 8, 11]
search_key = 5
result = bst.search(search_key)
if result:
print(f"Element {search_key} found in the binary search tree.")
else:
print(f"Element {search_key} not found in the binary search tree.")
Output:
Element 5 found in the binary search tree.