Bird
Raised Fist0
DSA Pythonprogramming~10 mins

Kth Smallest Element in BST in DSA Python - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to perform an inorder traversal of the BST.

DSA Python
def inorder(node, result):
    if node is None:
        return
    inorder(node.left, result)
    result.append(node.val)
    [1](node.right, result)
Drag options to blanks, or click blank then click option'
Avisit
Btraverse
Cinorder
Dappend
Attempts:
3 left
💡 Hint
Common Mistakes
Using a wrong function name for the recursive call.
Forgetting to call the function on the right child.
2fill in blank
medium

Complete the code to return the kth smallest element from the inorder traversal list.

DSA Python
def kth_smallest(root, k):
    result = []
    inorder(root, result)
    return result[[1]]
Drag options to blanks, or click blank then click option'
Ak
B0
Ck+1
Dk-1
Attempts:
3 left
💡 Hint
Common Mistakes
Using k instead of k-1 as the index.
Using 0 or k+1 which are incorrect indices.
3fill in blank
hard

Fix the error in the recursive inorder traversal to avoid infinite recursion.

DSA Python
def inorder(node, result):
    if node is None:
        return
    inorder(node.left, result)
    result.append(node.val)
    inorder([1], result)
Drag options to blanks, or click blank then click option'
Anode.right
Bnode.left
Cnode
Dresult
Attempts:
3 left
💡 Hint
Common Mistakes
Calling inorder on node.left twice.
Calling inorder on the node itself or the result list.
4fill in blank
hard

Fill both blanks to create a dictionary comprehension that maps each word to its length if the length is greater than 3.

DSA Python
lengths = {word: [1] for word in words if len(word) [2] 3}
Drag options to blanks, or click blank then click option'
Alen(word)
B<
C>
Dword
Attempts:
3 left
💡 Hint
Common Mistakes
Using < instead of > in the condition.
Mapping word to word instead of its length.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that maps uppercase keys to values only if the value is positive.

DSA Python
result = [1]: [2] for k, v in data.items() if v [3] 0}
Drag options to blanks, or click blank then click option'
Ak.upper()
Bv
C>
Dk
Attempts:
3 left
💡 Hint
Common Mistakes
Using k instead of k.upper() for keys.
Using < or other operators instead of >.
Using k instead of v for values.

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