How abstract data types separate what a structure does from how it is built, how linked lists, binary search trees, sets and hash tables fit together, and how the HL topic links to the rest of the course.
From the subject guide: what you need to know and be able to do.
Linked lists, binary search trees, sets and hash tables, and when to use each.
Each one has its own page once something is published for it.
An abstract data type (ADT) describes a collection of data by the operations allowed on it and what each operation does, without saying how the data is stored. A program that uses a set only needs to add items, remove them and test membership; whether the set is built on an array, a tree or a hash table is hidden inside the implementation.
The choice of implementation decides how fast those operations run. Searching an unsorted array checks every element, a balanced binary search tree halves the remaining data at each step, and a hash table usually finds an item in a single step. Choosing the right ADT and implementation for a situation is one of the main design decisions in any program that handles a lot of data.
The topic has one subtopic, B4.1, Fundamentals of ADTs, which starts with the idea of an ADT and then studies four structures. The stack and queue of subtopic B2.2, Data structures, are already ADTs; B4.1 adds structures that grow and shrink by linking nodes together instead of shifting elements in a block of memory.

A linked list stores each item in a node that holds a reference to the next node, in singly, doubly and circular forms, and is evaluated against an array. A binary search tree (BST) keeps smaller values to the left and larger to the right, so a search halves the data at each step while the tree stays balanced. A set holds each value at most once and supports union, intersection, difference and subset tests. A hash table uses a hash function to turn a key into a position, which is how Java's HashMap and HashSet and Python's dict and set work.
Because B4 has a single subtopic, the table lists its six statements, all HL only.
Statement | Level | What it covers |
|---|---|---|
B4.1.1 | HL only | The properties and purpose of ADTs: operations defined separately from their implementation |
B4.1.2 | HL only | Evaluating linked lists: sketching insertion, deletion, traversal and search, and weighing memory use and speed against arrays |
B4.1.3 | HL only | Constructing singly, doubly and circular linked lists: insert, delete, traverse and search |
B4.1.4 | HL only | The structure of BSTs: inserting, deleting and searching, in-order, pre-order and post-order traversal, balanced and degenerate trees |
B4.1.5 | HL only | Constructing and applying sets: membership, adding and removing, union, intersection, difference, subset and superset |
B4.1.6 | HL only | Hash tables, hash functions and collisions, and the maps and sets built on them in Java and Python |
Linked lists and sets are written in code in both languages. Binary search trees are explained and sketched; their traversals use the branching recursion of subtopic B2.4.
The topic draws on most of theme B. Nodes are objects joined by references, so it uses the classes of topic B3; operations are compared with the Big O notation of subtopic B2.4; and BST traversals use recursion (HL). Set operations mirror the Boolean logic of subtopic A1.2: an item is in the union of two sets if it is in the first OR the second.
The structures also appear outside programming. Database indexes in subtopic A3.3 are commonly built as B-trees, a relative of the BST, and the round robin scheduling of subtopic A1.3 cycles through processes in the way a circular linked list cycles through its nodes. The hash function of a hash table aims at speed and an even spread of keys, unlike the cryptographic hash functions of subtopic A2.4, which aim to be impossible to reverse.
The official deck for this part of the syllabus.
With a free account, Augment remembers where you stopped and what you have practiced.