Read-only web browser

Solutions

Browse the interview solutions folder with syntax highlighting.

kth-smallest-element-in-a-bst.py

trees/kth-smallest-element-in-a-bst.py · Python · 989 B · 2026-02-26 08:32

Back to folder
# In-order traversal filling a list and returning the k-1 indexed element.
# trees

# DFS Inorder Traversal - O(n) time, O(n) space
class Solution:
    def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
        lst = []
        self.inorder(root, lst)
        return lst[k-1]

    def inorder(self, node: Optional[TreeNode], lst: list[TreeNode]):
        if not node:
            return
        self.inorder(node.left, lst)
        lst.append(node.val)
        self.inorder(node.right, lst)

# Optimization: keep track of the count of nodes visited and return when we reach k.


# DFS iterative - O(n) time, O(h) space
class Solution:
    def kthSmallest(self, root: Optional[TreeNode], k: int) -> int:
        stack = []
        
        while True:
            while root:
                stack.append(root)
                root = root.left
            root = stack.pop()
            k -= 1
            if not k:
                return root.val
            root = root.right