DsAndAlgo

Linked List

> Basic Operations on Single Linked List 
> Doubly Linked List 
> Circular Linked list
> Reverse a Linked List - ( Recursion, Stack, Iterative)
> Find middle of a single Linked List
> Find nth Node from end
> Add first & last , second & second last ...... in O(n) - ( Recursive and Non recursive)
> Linked List is Palindrome or not
i> Detect Loop
i> Remove Loop 
> Merging Point of Linked Lists ( slow and fast, hashing)

Stacks

> Stack implmentation using Array - Basic Operations
> Stack implementation using LinkedStack  - Basic Operations 
> Multiple stacks in 1 Array
> Min element in a Stack in O (1)
> Implement Stack using Queues 
i> Brackets Validation
> HTML TAGS validator

Queues

> Queue Basic Operations - (ArrayQueue , LinkedQueue, Circular Queues) 
> Implement Queue using Stacks.

Hash Table

> Implement Hash Table with collision handling
> Count the number of words in a string

Greedy Algorithms

i> Knapsack
i> Job Sequencing
i> Interval Scheduling
i> Minimum number of Platforms required for a railway/bus station

Sorting

i> Merge Sort (recursive and non-recursive)
i> Quick Sort (recursive and non-recursive)
i> Heap Sort

String Algorithms

> KMP 
> Z Algorithm

Binary Search

i> Binary Search - Recursive and Non recursive
x> Find all pairs with sum K 
x> Find first occurence of an integer in a sorted list with duplicates
x> Rotation count of a sorted array 
x> Search element in a rotated sorted array
x> Find missing element
i>find all triplets with sum = x

Dynamic Programming

i> 0-1 Knapsack problem
i> Longest Common Subsequence
i> The subset sum problem
i> Longest Increasing Subsequence 
i> The coin change problem
i> Count number of ways to cover a distance
i> Matrix Chain Multiplication
i> Edit Distance problem for strings
i> Cut the rod to maximize profit
i> Minimum Jumps to reach the last element of array

Trees

i> Creating a  BST 
i> Traversals (Inorder, Preorder and Postorder).
i> Calculate Height of a Tree 
i> Path in the Tree ( Highest cost , Print the paths)
i> Level Order Traversal
i> Level Order Traversal in Spiral Form 
i> Reverse Level Order Traversal
i> Mirror of a Tree
i> Vertical Order Traversal 
i> Top View of a Tree 
i> Bottom View of a Tree
i> Check is tree is valid BST or not
i> Delete a Node in BST 
...> Palindromic tree 
i> Lowest Common Ancestor
i> Diameter of a Binary Tree 
i> Delete a Tree 
x> Construct a Tree from Inorder and Preorder, 
x> Construct a Tree from InOrder and PostOrder
x> Implement Tree using Array
x> Iterative Traversals (Inorder, Preorder and Postorder).
x> Binary Tree to Doubly Linked List

Balanced Trees

> (AVL)(optional implementation)
> Red-Black trees 
> Tries 

Graphs

x> Graph Implementation ( Vertex List using the Hash table )
i> Edge List 
i> Adjacency Matrix
i> Adjacency List
i> Traversals - DFS & BFS
i> Dijkstra's Shortest Path algorithm
i> Floyd-Warshall algorithm
...> Kruskal's algorithm
i> Prim's algorithm

Projects

> Tetris Game - with complete UNDO functionality.
> Playlist Manager
> Implement your own Database ( at least command interpreter is required

Backtracking

i> Generate all Binary strings of length n 
i> Print all permutations of a given string
i> N-Queen Problem
i> Rat in a Maze Problem

Priority Queues and Heaps

> Find median in a stream
> Operations on Binary Min heap
> Kth largest element in a stream
> Merge K sorted linked list

Suffix Arrays

> Longest Repeated String - Overlapping
> Longest Common Prefix
...> Longest Repeated String - Non - Overlapping
...> Longest Repeated String which occurs n times 
...> All Anagrams in Dictionary  

strings z,kmp kruskal -min spanning tree