
Articles
Data Structures
Data structures are the shapes we choose to organise information so the surrounding code can work with it efficiently. Tries, heaps, stacks, queues, linked lists, trees, hash maps, caches, and disjoint sets all solve different access and update problems, which is why they overlap so naturally with both Algorithms and LeetCode. This category is for the posts where the structure itself is a big part of the lesson, not just a background detail in the final solution.
Below you will find a subset of articles from my blog specifically about Data Structures. This is an area that I have worked with for many years, and have managed to write about quite a few times. There are ten collected together for you below.

LeetCode: Finding the Diameter of a Binary Tree. 
LeetCode: Solving the 'Merge Two Sorted Lists' Problem. LeetCode: Solving the 'Merge Two Sorted Lists' Problem

Monotonic Stack: Solving the 'Daily Temperatures' Problem. Monotonic Stack: Solving the 'Daily Temperatures' Problem

Implementing a Trie in TypeScript: Solving 'Implement Trie (Prefix Tree)'. Implementing a Trie in TypeScript: Solving 'Implement Trie (Prefix Tree)'

Solving the LeetCode 'Binary Tree Zigzag Level Order Traversal' Problem. Solving the LeetCode 'Binary Tree Zigzag Level Order Traversal' Problem

Breadth‑First Search: Solving Binary Tree Level Order Traversal. Breadth‑First Search: Solving Binary Tree Level Order Traversal

Prefix Sums and Hash Maps: Solving 'Subarray Sum Equals K'. Prefix Sums and Hash Maps: Solving 'Subarray Sum Equals K'

Fast and Slow Pointers: Solving the 'Linked List Cycle' Problem. Fast and Slow Pointers: Solving the 'Linked List Cycle' Problem

LeetCode: Removing the nth Node from the End of a List. LeetCode: Removing the
nthNode from the End of a List
Add Two Numbers in TypeScript: Linked Lists Without the Hand‑Waving. Add Two Numbers in TypeScript: Linked Lists Without the Hand‑Waving