Explain kth-smallest in a BST.
Skip to solutionKEEP THE
mediumDSA
How do you find the kth smallest element in a BST?
700 views
01
Understand the problem
treesbstinorder
02
Attempt it yourself
Sketch your approach before reading the solution — that's what interviews test.
Nudge consolestandby
Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.
03
Study the solution
An inorder traversal of a BST yields sorted order, so the kth visited node is the answer — stop early once you've counted k. Average O(h + k) using an explicit stack. Augmenting nodes with subtree sizes makes repeated queries O(h).
Solution ready — 2 min read
Classified // press E to declassify
04
Read the code
Iterative in-order, early stop
Run Playgroundclass TreeNode:
def __init__(self, val, left=None, right=None):
self.val, self.left, self.right = val, left, right
def kth_smallest(root, k):
stack = []
node = root
while stack or node:
while node: # dive to the smallest
stack.append(node)
node = node.left
node = stack.pop()
k -= 1
if k == 0:
return node.val
node = node.right # then the right subtree
return None
# --- demo ---
root = TreeNode(5,
TreeNode(3, TreeNode(2), TreeNode(4)),
TreeNode(6))
print(kth_smallest(root, 3)) # 405
Join the discussion
Discussion (0)
Sign in to join the discussion.
No responses yet. Be the first to share what you think.
Transmission complete // awaiting log
KEEP THE
STREAK ALIVE.
Dossier 56 of 127 decoded in the Data Structures & Algorithms track. One more won't hurt.