# Top Algorithms/Data Structures/Concepts every computer science student should know

# Top Algorithms:

Every computer science student is expected to know the following algorithms:

- Binary Search Algorithm
- Breadth First Search (BFS) Algorithm
- Depth First Search (DFS) Algorithm
- Inorder, Preorder, Postorder Tree Traversals
- Insertion Sort, Selection Sort, Merge Sort, Quicksort, Counting Sort, Heap Sort
- Kruskal’s Algorithm
- Floyd Warshall Algorithm
- Dijkstra’s Algorithm
- Bellman Ford Algorithm
- Kadane’s Algorithm
- Lee Algorithm
- Flood Fill Algorithm
- Floyd’s Cycle Detection Algorithm
- Topological Sorting in a DAG
- Union Find Algorithm

# Top Data Structures:

Along with the above algorithms, every computer science student is expected to implement the following data structures:

- Linked List — C, C++, Java, Python
- Linked List — Insertion at Tail
- BST — Insertion, Searching, Deletion
- Stack implementation using an array — C, C++, C++ (Using Templates), Java, Python
- Stack Implementation using a Linked List
- Queue implementation using an array — C, C++, C++ (Using Templates), Java, Python
- Queue Implementation using a Linked List
- Min Heap and Max Heap — C++, Java
- Graph — C, C++, C++ STL, Java Collections, Python
- Trie — C, C++, C++ (Memory Efficient), Java, Python

# Top Concepts:

Finally, one is also expected to be familiar with other programming paradigms like Backtracking, Dynamic Programming, Divide & Conquer and Greedy Algorithms, and concepts like Hashing and Recursion.