Skip to content


Linked List

  1. Linked List Template
  2. Singly Linked List
  3. Doubly Linked List


  1. Stack using Python List
  2. Stack using Linked List
  3. Infix to Postfix expression
  4. Infix to Prefix expression
  5. Postfix to Infix expression
  6. Prefix to Infix expression
  7. Evaluation of Postfix expression
  8. Evaluation of Prefix expression


  1. Linear Queue using Python List
  2. Linear Queue using Linked List
  3. Double Ended Queue using Python List
  4. Double Ended Queue using Doubly Linked List
  5. Circular Queue using Python List
  6. Circular Queue using Circular Linked List
  7. Circular Double Ended Queue using Doubly Linked List


  1. General Binary Tree
  2. Building Simple Binary Tree from user input
  3. Binary Tree Types
    1. Full or Proper Binary Tree
    2. Perfect Binary Tree
    3. Complete Binary Tree
    4. Balanced Binary Trees
  4. Binary Search Tree
  5. AVL Tree
  6. Depth First Traversals (Inorder, Preorder and Postorder)
  7. Level Order Binary Tree Traversal


  1. Understanding Heaps using heapq in Python
  2. Binary Heap using heapq
  3. Binary Heap implementation using Python List
  4. Max Heap
  5. Min Heap

Disjoint Set Union Find

  1. Disjoint Set Union Find Naive
  2. Disjoint Set Union Find Optimized


  1. Graph representation using Adjacency Matrix
  2. Graph representation using Adjacency List
  3. Graph Traversals
  4. Depth First Traversal
  5. Breadth First Traversal
  6. Types of edges in graph using DFS
  7. Detect cycle in directed graph using dfs
  8. Detect cycle in undirected graph using bfs
  9. Detect cycle in undirected graph using dfs
  10. Detect cycle in undirected graph using disjoint set
  11. Minimum Spanning Tree using Kruskal's Algorithm
  12. Minimum Spanning Tree using Prim's Algorithm
  13. Minimum Spanning Tree using Prim's Algorithm using Priority Queue
  14. Topological Sorting
  15. Topological Sorting using Kahn's Algorithm
  16. Connected Components
  17. Bridges in graph
  18. Articulation point in graph
  19. Dijkstra's Single Source Shortest Path Algorithm Naive implementation

Searching Algorithms

  1. Linear Search
  2. Binary Search

Sorting Algorithms

  1. Insertion Sort
  2. Selection Sort
  3. Bubble Sort
  4. Merge Sort
  5. Quick Sort


  1. Recursion overview/template
  2. Factorial
  3. Power of 2
  4. Print Count
  5. Say Digit
  6. Fibonacci Number
  7. Bubble Sort

Dynamic Programming (Recursion, Recursion + Memoization, Tabulation, Tabulation + Space Optimization)

  1. Fibonacci Series
  2. Nth Stairs
  3. Minimum Cost climbing stairs
  4. Coin change



  • Code restructure
  • Update readme with links
  • Document code & explanation
  • Correct code where ever necessary

Circular Linked List

  • Complete implementation

Doubly Linked List

  • Implement Remove key method

Doubly Circular Linked List

  • Complete implementation


  • Stack using LIFOQueue
  • Expression Trees from Postfix



  • B Tree
  • B+ Tree
  • Red Black Tree


  • Detect Cycle in directed graph using DFS and Colors
  • Connected components
    • Using Disjoint Set Union
  • Find all topological sorts of a DAG
  • Dijkstra's using Adjacency List representation
  • Using Min Heap
  • Using Set?

Sorting Algorithms

  • Tim Sort


  • Insertion Sort
  • Selection Sort

Divide & Conquer

Branch & Bound