What this course is about
  • You, This course and Us
Data Structures And Algorithms - A Symbiotic Relationship
  • Why are Data Structures And Algorithms important?
Complexity Analysis and the Big-O Notation
  • Performance and Complexity
  • The Big-O Notation
  • What is the complexity of these pieces of code?
Linked Lists
  • The Linked List - The Most Basic Of All Data Structures
  • Linked List Problems
  • Linked Lists vs Arrays
Stacks And Queues
  • Meet The Stack - Simple But Powerful
  • Building A Stack Using Java
  • Match Parenthesis To Check A Well Formed Expression
  • Find The Minimum Element In A Stack In Constant Time
  • Meet The Queue - A Familiar Sight In Everyday Life
  • The Circular Queue - Tricky But Fast
  • Build A Queue With Two Stacks
Sorting and Searching
  • Sorting Trade-Offs
  • Selection Sort
  • Bubble Sort
  • Insertion Sort
  • Shell Sort
  • Merge Sort
  • Quick Sort
  • Binary Search - search quickly through a sorted list
Binary Trees
  • Meet The Binary Tree - A Hierarchical Data Structure
  • Breadth First Traversal
  • Depth First - Pre-OrderTraversal
  • Depth First - In-Order and Post-Order Traversal
Binary Search Trees
  • The Binary Search Tree - an introduction
  • Insertion and Lookup in a Binary Search Tree
Binary Tree Problems
  • Minimum Value, Maximum Depth And Mirror
  • Count Trees, Print Range and Is BST
Heaps
  • The Heap Is Just The Best Way to Implement a Priority Queue
  • Meet The Binary Heap - It's A Tree At Heart
  • The Binary Heap - Logically A Tree Really An Array
  • The Binary Heap - Making It Real With Code
  • Heapify!
  • Insert And Remove From A Heap
Revisiting Sorting - The Heap Sort
  • Heap Sort Phase I - Heapify
  • Heap Sort Phase II - The Actual Sort
Heap Problems
  • Maximum Element In A Minimum Heap and K Largest Elements In A Stream
Graphs
  • Introducing The Graph
  • Types Of Graphs
  • The Directed And Undirected Graph
  • Representing A Graph In Code
  • Graph Using An Adjacency Matrix
  • Graph Using An Adjacency List And Adjacency Set
  • Comparison Of Graph Representations
  • Graph Traversal - Depth First And Breadth First
Graph Algorithms
  • Topological Sort In A Graph
  • Implementation Of Topological Sort
Shortest Path Algorithms
  • Introduction To Shortest Path In An Unweighted Graph - The Distance Table
  • The Shortest Path Algorithm Visualized
  • Implementation Of The Shortest Path In An Unweighted Graph
  • Introduction To The Weighted Graph
  • Shortest Path In A Weighted Graph - A Greedy Algorithm
  • Dijkstra's Algorithm Visualized
  • Implementation Of Dijkstra's Algorithm
  • Introduction To The Bellman Ford Algorithm
  • The Bellman Ford Algorithm Visualized
  • Dealing With Negative Cycles In The Bellman Ford Algorithm
  • Implementation Of The Bellman Ford Algorithm
Spanning Tree Algorithms
  • Prim's Algorithm For a Minimal Spanning Tree
  • Use Cases And Implementation Of Prim's Algorithm
  • Kruskal's Algorithm For a Minimal Spanning Tree
  • Implementation Of Kruskal's Algorithm
Graph Problems
  • Design A Course Schedule Considering Pre-reqs For Courses
  • Find The Shortest Path In A Weighted Graphs - Fewer Edges Better