Inorder Traversal
Less than 1 minuteTC-Medium
Inorder Traversal
Problem
Implement type-level in-order traversal of a binary tree.
const tree1 = {
val: 1,
left: null,
right: {
val: 2,
left: {
val: 3,
left: null,
right: null,
},
right: null,
},
} as const
type A = InorderTraversal<typeof tree1> // [1, 3, 2]Solution
Approach: Recursive Conditional Type
In-order traversal visits left subtree, then root, then right subtree.
interface TreeNode {
val: number
left: TreeNode | null
right: TreeNode | null
}
type InorderTraversal<T extends TreeNode | null> =
T extends TreeNode
? [
...InorderTraversal<T['left']>,
T['val'],
...InorderTraversal<T['right']>
]
: []How it works:
- If
Tisnull, return[](base case). - Otherwise, recursively traverse
left, collectval, then traverseright. - Spread all three into a single tuple.
Key Takeaways
- Recursive conditional types naturally model tree recursion.
- Tuple spreading (
[...A, B, ...C]) assembles results from multiple branches. - The base case
T extends TreeNodehandles thenullunion automatically.
