78. Kth Smallest Element in a BST
mediumAsked at RedditFind the kth smallest in a BST. Reddit uses this to test inorder + early termination — relevant for ranked-paginated retrieval from an in-memory BST of upvote scores.
By Alex Chen, Founder, InterviewChamp.AI · Last verified
Source citations
Public interview reports confirming this problem appears in Reddit loops.
- Glassdoor (2026-Q1)— Reddit phone screen, BST canonical.
Problem
Given the root of a binary search tree, and an integer k, return the kth smallest value (1-indexed) of all the values of the nodes in the tree.
Constraints
The number of nodes in the tree is n.1 <= k <= n <= 10^40 <= Node.val <= 10^4
Examples
Example 1
root = [3,1,4,null,2], k = 11Example 2
root = [5,3,6,2,4,null,null,1], k = 33Approaches
1. Full inorder + index
Build full inorder list, return list[k-1].
- Time
- O(n)
- Space
- O(n)
function kthSmallest(root, k) {
const list = [];
function inorder(n) { if (!n) return; inorder(n.left); list.push(n.val); inorder(n.right); }
inorder(root);
return list[k - 1];
}Tradeoff: Linear time but builds full list.
2. Iterative inorder with early-stop (optimal)
Use an explicit stack; stop as soon as we've popped k elements.
- Time
- O(h + k)
- Space
- O(h)
function kthSmallest(root, k) {
const stack = [];
let cur = root;
while (cur || stack.length) {
while (cur) { stack.push(cur); cur = cur.left; }
cur = stack.pop();
if (--k === 0) return cur.val;
cur = cur.right;
}
}Tradeoff: Doesn't traverse the whole tree. Sublinear when k << n.
Reddit-specific tips
Reddit interviewers want the early-stop version. Bonus signal: discuss how the answer changes if the BST is modified frequently — Morris traversal preserves O(1) extra space, or maintain a size attribute per node for O(log n) selection.
Common mistakes
- Forgetting that k is 1-indexed.
- Recursing right before left (gives kth largest).
- Building the full list when iterative early-stop is asked for.
Follow-up questions
An interviewer at Reddit may pivot to one of these next:
- Kth largest in BST.
- What if the BST is modified often? (Maintain rank — augmented BST.)
- Kth smallest in sorted matrix (LC 378).
Solve it now
Free. No sign-up. Python and JavaScript run instantly in your browser.
FAQ
Why is iterative better here?
Early-stop saves work when k is small. Recursive needs to track 'how many remaining' through return values.
What about Morris traversal?
O(1) extra space using threading. More code, same complexity.
Practice these live with InterviewChamp.AI
Drill Kth Smallest Element in a BST and other Reddit interview questions under real-loop conditions with instant feedback on your reasoning, complexity claims, and code.
Practice these live with InterviewChamp.AI →