Bird
Raised Fist0
DSA Pythonprogramming~5 mins

Kth Smallest Element in BST in DSA Python - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a Binary Search Tree (BST)?
A BST is a tree where each node has at most two children. The left child's value is less than the parent's value, and the right child's value is greater. This helps in fast searching.
Click to reveal answer
beginner
What does 'Kth smallest element in BST' mean?
It means finding the element that would be at position K if all elements were sorted from smallest to largest.
Click to reveal answer
beginner
Which traversal method helps find the Kth smallest element in a BST?
Inorder traversal visits nodes in ascending order in a BST, so it helps find the Kth smallest element by counting nodes visited.
Click to reveal answer
intermediate
What is the time complexity of finding the Kth smallest element using inorder traversal?
The time complexity is O(H + K), where H is the height of the tree, because we traverse down to the leftmost node and then visit K nodes.
Click to reveal answer
intermediate
How can you stop the inorder traversal early when finding the Kth smallest element?
Keep a count of visited nodes during traversal. When count reaches K, stop traversal and return the current node's value.
Click to reveal answer
What property of BST helps in finding the Kth smallest element efficiently?
ANodes are stored in a linked list
BAll nodes have two children
CLeft child < parent < right child
DNodes have random values
Which traversal order visits BST nodes in ascending order?
AInorder
BPreorder
CPostorder
DLevel order
If K=1, what is the Kth smallest element in a BST?
AThe smallest element
BThe largest element
CThe root element
DThe middle element
What is the main idea to stop traversal early when finding the Kth smallest element?
AStop after visiting right subtree
BStop after visiting all nodes
CStop after visiting root
DStop after visiting K nodes
What is the worst-case time complexity to find the Kth smallest element in a skewed BST?
AO(log N)
BO(N)
CO(1)
DO(N log N)
Explain how inorder traversal helps find the Kth smallest element in a BST.
Think about the order nodes are visited and how counting helps.
You got /4 concepts.
    Describe the steps to implement a function that returns the Kth smallest element in a BST.
    Focus on traversal and counting.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the term Kth Smallest Element in BST mean?
      easy
      A. The element that is the Kth largest in the BST
      B. The element that is the Kth in ascending order in the BST
      C. The root element of the BST
      D. The element with value K in the BST

      Solution

      1. Step 1: Understand BST ordering

        A Binary Search Tree (BST) stores elements so that left child is smaller and right child is larger.
      2. Step 2: Define Kth smallest element

        The Kth smallest element is the element that appears in the Kth position when all elements are sorted ascending.
      3. Final Answer:

        The element that is the Kth in ascending order in the BST -> Option B
      4. Quick Check:

        Kth smallest means sorted order position [OK]
      Hint: Kth smallest means counting nodes in ascending order [OK]
      Common Mistakes:
      • Confusing Kth smallest with Kth largest
      • Thinking it means the root node
      • Assuming K is the value, not position
      2. Which of the following Python function signatures is correct to find the Kth smallest element in a BST?
      easy
      A. def kth_smallest(root: Optional[TreeNode], k: int) -> int:
      B. def kth_smallest(k: int, root: TreeNode) -> int:
      C. def kth_smallest(root: TreeNode, k: str) -> int:
      D. def kth_smallest(root: TreeNode) -> int:

      Solution

      1. Step 1: Check parameter order and types

        The function should take the root node and an integer k to find the Kth smallest element.
      2. Step 2: Validate correct typing and order

        def kth_smallest(root: Optional[TreeNode], k: int) -> int: correctly uses root as TreeNode (or Optional) and k as int, returning int.
      3. Final Answer:

        def kth_smallest(root: Optional[TreeNode], k: int) -> int: -> Option A
      4. Quick Check:

        Correct parameter order and types [OK]
      Hint: Root node first, k as int second in function parameters [OK]
      Common Mistakes:
      • Swapping parameter order
      • Using wrong type for k (like string)
      • Missing k parameter
      3. Given the BST below and k = 3, what is the output of the function kth_smallest(root, 3)?
             5
            / \
           3   7
          / \   \
         2   4   8
      
      medium
      A. 4
      B. 5
      C. 3
      D. 7

      Solution

      1. Step 1: List BST elements in ascending order

        Inorder traversal gives: 2, 3, 4, 5, 7, 8.
      2. Step 2: Identify the 3rd smallest element

        The 3rd element in this list is 4.
      3. Final Answer:

        4 -> Option A
      4. Quick Check:

        Inorder 3rd element = 4 [OK]
      Hint: Inorder traversal lists nodes ascending; pick Kth [OK]
      Common Mistakes:
      • Choosing root or random node instead of Kth
      • Counting nodes incorrectly
      • Confusing Kth smallest with Kth largest
      4. The following code tries to find the Kth smallest element in a BST but has a bug. What is the bug?
      def kth_smallest(root, k):
          stack = []
          while True:
              while root:
                  stack.append(root)
                  root = root.right  # Bug here
              root = stack.pop()
              k -= 1
              if k == 0:
                  return root.val
              root = root.left
      
      medium
      A. Stack should be initialized with root
      B. Return statement is missing
      C. k should be incremented, not decremented
      D. It should go to the left child first, not right

      Solution

      1. Step 1: Analyze traversal direction

        For Kth smallest, we do inorder traversal: left -> node -> right. The code wrongly goes right first.
      2. Step 2: Identify correct child to traverse first

        It should go to the left child first to get smallest elements first.
      3. Final Answer:

        It should go to the left child first, not right -> Option D
      4. Quick Check:

        Inorder traversal starts with left child [OK]
      Hint: Inorder traversal: always left child first [OK]
      Common Mistakes:
      • Going right child first in inorder
      • Not using stack properly
      • Incorrect decrement of k
      5. You have a BST with nodes: 10, 5, 15, 3, 7, 12, 18. You want to find the 5th smallest element. Which approach below correctly finds it efficiently?
      hard
      A. Use preorder traversal and return the 5th node visited
      B. Traverse only right subtree and pick the 5th node
      C. Perform inorder traversal and return the 5th visited node
      D. Return the root node value directly

      Solution

      1. Step 1: Understand traversal types

        Inorder traversal visits nodes in ascending order in BST.
      2. Step 2: Apply inorder traversal to find Kth smallest

        Perform inorder traversal and stop at the 5th node visited to get the 5th smallest element.
      3. Final Answer:

        Perform inorder traversal and return the 5th visited node -> Option C
      4. Quick Check:

        Inorder traversal gives sorted order [OK]
      Hint: Use inorder traversal to get sorted nodes [OK]
      Common Mistakes:
      • Using preorder or postorder which are not sorted
      • Ignoring left subtree nodes
      • Assuming root is always Kth smallest
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard