Data Structures
The design, implementation and efficiency of data structures and their algorithms, including arrays, stacks, queues, linked lists, binary trees, heaps, balanced trees and graphs. Other topics include sorting, hashing, Java generics, and unit testing.
Johns Hopkins · EN.601.226 · Spring 2022
Java and Object-Oriented Design
Overview
- Parts of a Java Class · OO Terminology · Data Structure · Algorithm · Searching · Recursion · Other Java Notes
Inheritance and Polymorphism
ADTs and Interfaces
Generics and Unit Testing
Java Exceptions
- Robust Methods · Testing Exceptions · Throwing Exceptions · Exception Hierarchies · Custom Exceptions
Iterators and Inner Classes
Linked List
Analysis
RAM Model
Asymptotic Growth Rate
Asymptotic Analysis
Quadratic Sorts
Lists, Stacks, Queues and Sets
Stack
Queue
Positional List
- Singly Linked List · Double Linked List · Position Interface · List · Position Exception · Node is-a Position · Sentinel Nodes
Set ADT
Trees and Maps
Binary Search Tree
Trees and Tree Traversal
- Level-order traversal · In-order traversal · Pre-order traversal · Post-order traversal · Tree Terminology · Perfect Binary Tree · Consideratios
Map ADT and Balanced BSTs
- Map Interface · Array-based implementation · OrderedMap ADT Interface · BinarySearchTreeMap · Efficiency · Balanced BST · Height is O(lgN)
AVL Tree
Priority Queue
- PriorityQueue ADT · Implementation · Heap Order Property · Ranked Array Representation · Best Operation · Insert Operation · Remove operation · PQ Constructors
Treap
Hashing and Sorting
Hash Table
- Motivation · Hash Function · Java's hashCode() · Collisions · Chaining · Linear Probing · Quadratic Probing · Other Probing Strategy
Heapsort
Merge Sort
Quicksort
- The Big Picture · Partition · Quicksort Implementation · Analysis · Pivot · Java Sorts · Stable Sorting