- Introduction
- Complexity theory basics
- Why to use data structures
- Data structures and abstract data types
- Installing Java and Eclipse on Windows
- Installing Java and Eclipse on Mac
- What are array data structures?
- Arrays introduction - operations
- Implementing arrays
- ArraysLists in Java
- Arrays Quiz
- Reversing an array in-place overview
- Reversing an array in-place solution
- Anagram problem overview
- Anagram problem solution
- Duplicates in an array problem overview
- Duplicates in an array problem solution
- What are linked lists?
- Linked list theory - operations
- Linked list implementation I
- Linked list implementation II
- Linked list implementation III
- Linked list implementation IV
- Comparing linked lists and arrays
- Practical (real-world) applications of linked lists
- Linked Lists Quiz
- What are doubly linked lists?
- Doubly linked list implementation
- LinkedLists in Java
- Running time comparison: linked lists and arrays
- Doubly Linked Lists Quiz
- Finding the middle node in a linked list overview
- Finding the middle node in a linked list solution
- Reverse a linked list in-place overview
- Reverse a linked list in-place solution
- What are stacks?
- Stacks in memory management (stacks and heaps )
- Stack memory visualization
- Stack implementation with linked list
- Stack implementation with arrays
- Dijkstra's interpreter introduction
- Dijkstra's interpreter implementation
- Stacks in Java
- Practical (real-world) applications of stacks
- Stacks Quiz
- What are queues?
- Queue implementation with linked list
- Queues in Java
- Queues Quiz
- Max in a stack problem overview
- Max in a stack problem solution
- Stack with queue overview
- Stack with queue solution
- Stack with queue solution - recursion
- Binary search trees theory - basics
- Binary search trees theory - search, insert
- Binary search trees theory - delete
- Binary search trees theory - in-order traversal
- Binary search trees theory - running times
- Binary search trees implementation I - Node and Tree classes
- Binary search trees implementation II - insertion
- Binary search tree implementation III - max, min and traversal
- Stack memory visualization - finding max (min) items
- Stack memory visualization - tree traversal
- Binary search tree implementation IV - remove
- Binary search tree implementation V - testing
- Practical (real-world) applications of trees
- Binary Search Trees Quiz
- Compare binary trees overview
- Compare binary trees solution
- Compare binary trees minor update
- k-th smallest element in a search tree overview
- k-th smallest element in a search tree solution
- Family age problem overview
- Family age problem solution
- Motivation behind balanced binary search trees
- What are AVL trees?
- AVL trees introduction - height
- AVL trees introduction - rotations
- AVL trees introduction - illustration
- AVL tree implementation I
- AVL tree implementation II
- AVL tree implementation III
- AVL tree implementation IV
- AVL tree implementation V
- Practical (real-world) applications of balanced binary search trees