Advanced Topic 44 of 52 Data Structures
Persistent Data Structures
Structures preserving previous versions after updates.
How it works
Persistent data structures preserve previous versions when updated: each modification returns a new version while the old one stays intact and usable. Efficiency comes from structural sharing, where unchanged parts are reused, such as path copying in trees that copies only O(log n) nodes per update. They can be fully persistent, with updates to any version, or partially persistent.
Step-by-step walkthrough
- Version 1 is an immutable tree.
- An update copies only the nodes on the path to the changed node.
- The new root becomes version 2.
- Unchanged subtrees are shared by both versions.
- Both versions stay valid, enabling undo and time travel.
Where it is used
Functional languages like Clojure and Haskell, version control systems, undo histories, immutable state in UI frameworks and databases with snapshot isolation use them. They simplify concurrency since versions are never mutated.
Common pitfall
Naive copying wastes time and memory. Persistent structures carry constant-factor overhead compared with mutable arrays. Memory may be retained if old versions are kept alive accidentally, so rely on garbage collection. Debugging sharing can be subtle, and not every structure has an efficient persistent form.
Where it fits in the course
Persistent Data Structures is topic 44 of 52 in Data Structures, rated Advanced. It follows Circular Buffer. The next topic is Fibonacci Heaps.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Data Structures quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Data Structures quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Persistent Data Structures?
Where do people use Persistent Data Structures?
What is the most common mistake with Persistent Data Structures?
What should I learn before this topic?
How can I practice it?
Is Persistent Data Structures hard to learn?
How long does it take to learn Persistent Data Structures?
Which topics are related to Persistent Data Structures?
What should I study after Persistent Data Structures?
Related topics
- Circular Buffer (Data Structures)
- Fibonacci Heaps (Data Structures)
- LRU Cache Structure (Data Structures)
- Van Emde Boas Trees (Data Structures)
- Lock-Free Data Structures (Concurrency & Parallelism)
- Data Types (Programming Fundamentals)
- Open Data and Licensing (Emerging & Frontier Topics)