Kth Smallest Element in a BST — Inorder Traversal

Sanjeev SharmaSanjeev Sharma
1 min read

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

Sanjeev Sharma

Written by

Sanjeev Sharma

Full Stack Engineer · E-mopro