# DATA-STRUCTURE-AND-ALGORITHMS-DSA-

This is my repository of Data Structures and Algorithms.

It includes topics:

- AVL Trees
- Determining whether the given tree is AVL Tree or not.
- Right Rotation in Tree
- Left Rotation in Tree
- R-L Rotation in Tree
- L-R Rotation in Tree
- Converting any given tree to the AVL Tree

- Binary Search Trees
- Implementation of BST
- Searching a particular element in the BST
- Inserting a particular element in BST
- Deleting a particular element in BST
- Determining the Height of a particular BST
- Counting the Total number of nodes present in the BST
- Forming the Mirror Image of the given BST
- Finding the smallest and the largest element in BST

- Binary Trees
- Level Order Traversal of the given Binary Tree
- Iterative and Recursive way of finding InOrder Traversal
- Iterative and Recursive way of finding PreOrder Traversal
- Iterative and Recursive way of finding PostOrder Traversal
- Constructing a binary tree form the Inorder and preorder traversals.

- Graphs
- Adjacency Matrix Representation of the Graph
- Number of ways to reach from one node to another node
- Adjacency List Representation of the Graph
- Breadth Firts Traversal of the Graph
- Depth First Trvaersal of the Graph using the Recursive and Iterative methods.
- Topological Sort
- Detecting a Cycle in the Graph.
- Dijkstra Algorithm for Graph
- Union Find Algorithm for Graph
- Kruskal’s Algorithm for Graph
- Floyd Warshall’s Algorithm for Graph
- Prims Algorithm For Graph
- To check weather the Given Graph is a binary tree or not

- Hashing
- Implemenetation of the basic Hash Algorithm
- Hash Collision Techniques: Chaining and Open Addressing

- Heaps
- Converting the array representation of heap to tree form
- Converting the tree representation of hea[ to array form
- Inserting an element into the heap
- Deleting an element into the heap
- Heapify using iterative method
- Heap Sort
- Using priority queue from the STL

- Linked List
- Implemenetation and basic operations on singly linked list
- Implemenetation and basic operations on Doubly linked list
- Implemenetation and basic operations on Circular linked list
- Implemenetation and basic operations on Doubly Circular linked list

- Queues
- Implementing queues from the arrays(Circular Queue).
- Implementing queues from the Linked list
- Double ended queue Implementation with basic operation

- Searching
- Linear Search
- Binary Search
- Jump Search

- Sorting
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Shell Sort
- Count Sort
- Quick Sort
- Radix Sort
- Heap Sort

- Stacks
- Implemenetation and basic operations of stacks using arrays.
- Implemenetation and basic operations of stacks using Linked List.
- Reversing a list using stacks
- Balancing Parenthesis Problem
- Infix to Postfix using stacks
- Infix to prefix using stacks
- Postfix to Infix using stacks
- Prefix to Infix using stacks