Kth Smallest Element in a BST — Inorder Traversal
Advertisement
Problem 372 · Kth Smallest Element in a BST
Difficulty: Medium · Pattern: Inorder Traversal
Inorder of BST = sorted order. Return kth element.
Solutions
# Python — iterative inorder
def kthSmallest(root, k):
stack = []
curr = root
while curr or stack:
while curr: stack.append(curr); curr = curr.left
curr = stack.pop()
k -= 1
if k == 0: return curr.val
curr = curr.right
// Java
public int kthSmallest(TreeNode root, int k) {
Deque<TreeNode> stack=new ArrayDeque<>(); TreeNode curr=root;
while (curr!=null||!stack.isEmpty()) {
while (curr!=null) { stack.push(curr); curr=curr.left; }
curr=stack.pop();
if (--k==0) return curr.val;
curr=curr.right;
}
return -1;
}
Complexity
- Time: O(h+k)
- Space: O(h)
Advertisement