• Abstract data types Introduction
  • Understanding time/space complexity
  • QUIZ: time complexity
Static and dynamic arrays
  • Static and dynamic arrays
  • QUIZ: dynamic arrays
  • Dynamic array source code
Linked lists
  • Linked list introduction
  • QUIZ: linked lists
  • Doubly linked list source code
  • Understanding stacks
  • Stack implementation details
  • QUIZ: stacks
  • Stack source code
  • Understanding queues
  • QUIZ: queues I
  • Breadth first search and queue implementation
  • QUIZ: queues II
  • Queue source code
Priority queues
  • What is a priority queue?
  • Min heaps and Max heaps
  • Priority queue inserting elements
  • QUIZ: priority queue
  • Priority queue removing elements
  • Priority queue source code
Union find/Disjoint set
  • Union find introduction
  • Kruskal's Algorithm
  • Union and find operations
  • Path compression
  • Union find source code
  • QUIZ: union find
Binary search trees
  • Introduction to binary trees
  • Binary search tree insertions
  • Binary search tree removals
  • Binary tree traversals
  • QUIZ: tree traversals
  • Binary search tree source code
Hash tables
  • Hash table hash functions
  • Hash table separate chaining
  • Hash table separate chaining source code
  • QUIZ: hash functions and separate chaining
  • Hash table open addressing
  • Hash table linear probing
  • Hash table quadratic probing
  • Hash table double hashing
  • QUIZ: open addressing
  • Hash table removing key-value pairs
  • Hash table open addressing source code
Fenwick tree/Binary indexed tree
  • Fenwick tree range queries
  • Fenwick tree point updates
  • Fenwick tree construction
  • Fenwick tree source code
  • QUIZ: fenwick tree
AVL Tree
  • Tree rotations
  • AVL tree insertions
  • AVL tree removals
  • AVL tree source code
Indexed Priority Queue
  • Introduction to indexed priority queues
  • Indexed priority queue source code
Sparse Tables
  • Sparse Table
  • Sparse Table Source Code