Chapter 0 Preface¶
Chapter 1 Introduction for Data Structures and Algorithms Courses¶
Chapter 2 Week 1¶
- 2.1. Chapter Introduction: Memory Management
- 2.2. Dynamic Storage Allocation
- 2.3. Best Fit
- 2.4. First Fit
- 2.5. Pointers Chapter Introduction
- 2.6. Basic Pointers
- 2.6.1. What is a pointer?
- 2.6.2. Pointer Reference and Dereference
- 2.6.3. Pointer Assignment
- 2.6.4. Bad Pointers
- 2.6.5. Syntax
- 2.6.6. Example Pointer Code
- 2.6.7. Pointer Rules Summary
- 2.6.8. How Do Pointers Work In Java?
- 2.6.9. How Are Pointers Implemented In The Machine?
- 2.6.10. The Term 'Reference'
- 2.6.11. Why Are Bad Pointer Bugs So Common?
- 2.7. Local Memory
- 2.8. Heap Memory
- 2.9. Reference Parameters
- 2.10. Pointers Exercises
Chapter 3 Week 2: Asymptotic analysis¶
Chapter 4 Week 2: Algorithm Analysis¶
Chapter 5 Week 3: Linked Lists¶
Chapter 6 Week 4: Binary Trees¶
- 6.1. Binary Trees Chapter Introduction
- 6.2. Binary Trees
- 6.3. Binary Tree as a Recursive Data Structure
- 6.4. The Full Binary Tree Theorem
- 6.5. Binary Tree Traversals
- 6.6. Implementing Tree Traversals
- 6.7. Information Flow in Recursive Functions
- 6.7.1. Information Flow in Recursive Functions
- 6.7.2. Binary Tree Set Depth Exercise
- 6.7.3. Collect-and-return
- 6.7.4. Binary Tree Check Sum Exercise
- 6.7.5. Binary Tree Leaf Nodes Count Exercise
- 6.7.6. Binary Tree Sum Nodes Exercise
- 6.7.7. Combining Information Flows
- 6.7.8. Binary Tree Check Value Exercise
- 6.7.9. Combination Problems
- 6.7.10. Binary Tree Height Exercise
- 6.7.11. Binary Tree Get Difference Exercise
- 6.7.12. Binary Tree Has Path Sum Exercise
- 6.8. Binary Tree Node Implementations
- 6.9. Composite-based Expression Tree
- 6.10. Binary Tree Space Requirements
- 6.11. Dictionary Implementation Using a BST
- 6.12. Binary Tree Guided Information Flow
- 6.13. Multiple Binary Trees
- 6.14. A Hard Information Flow Problem
- 6.15. Array Implementation for Complete Binary Trees
- 6.16. Huffman Coding Trees
- 6.17. Trees versus Tries
- 6.18. Proof of Optimality for Huffman Coding
- 6.19. Binary Tree Chapter Summary
Chapter 7 Week 4: Stacks¶
Chapter 8 Week 4: Queues¶
Chapter 9 Week 5: BST & Splay Trees¶
Chapter 10 Week 6: Priority Queues and Heaps¶
Chapter 11 Week 7: Leftist Heaps and Red-Black Trees¶
Chapter 12 Week 8: Hashing¶
Chapter 13 Week 9: Graphs¶
Chapter 14 Week 9: Skip Lists¶
Chapter 15 Week 10: Search¶
Chapter 16 Appendix: Recursion¶
- 16.1. Introduction
- 16.2. Writing a recursive function
- 16.3. Code Completion Practice Exercises
- 16.3.1. Introduction
- 16.3.2. Recursion Programming Exercise: Largest
- 16.3.3. Recursion Programming Exercise: Multiply
- 16.3.4. Recursion Programming Exercise: GCD
- 16.3.5. Recursion Programming Exercise: log
- 16.3.6. Recursion Programming Exercise: Cummulative Sum
- 16.3.7. Recursion Programming Exercise: Add odd positions
- 16.3.8. Recursion Programming Exercise: Sum Of the Digits
- 16.3.9. Recursion Programming Exercise: Count Characters
- 16.4. Writing More Sophisticated Recursive Functions
- 16.5. Harder Code Completion Practice Exercises
- 16.6. Writing Practice Exercises
- 16.7. Tracing Recursive Code
- 16.8. Tracing Practice Exercises
- 16.9. Summary Exercises