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 and sorting.
Click to reveal answer
beginner
What does 'Kth smallest element in BST' mean?
It means finding the element that would appear in 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 in a BST using inorder traversal?
The time complexity is O(H + K), where H is the height of the tree. This is because we traverse down to the leftmost node and then count K nodes.
Click to reveal answer
advanced
How can you optimize finding the Kth smallest element if the BST is frequently queried?
You can store the count of nodes in each subtree at every node. This allows skipping entire subtrees and finding the Kth smallest in O(H) time.
Click to reveal answer
Which traversal order visits BST nodes in ascending order?
APreorder
BPostorder
CInorder
DLevel order
✗ Incorrect
Inorder traversal visits left child, then node, then right child, which results in ascending order for BST.
What is the first step to find the Kth smallest element in a BST?
APerform inorder traversal
BPerform preorder traversal
CPerform postorder traversal
DCount total nodes
✗ Incorrect
Inorder traversal visits nodes in ascending order, so it is used to find the Kth smallest element.
If K=1, what element does the Kth smallest in BST represent?
AMedian element
BLargest element
CRoot element
DSmallest element
✗ Incorrect
The 1st smallest element is the smallest element in the BST.
What is the worst-case height H of a BST?
ASquare root of N
BNumber of nodes (N)
CConstant 1
DLogarithm of N
✗ Incorrect
In worst case, BST can be skewed and height equals number of nodes.
How can storing subtree node counts help in finding the Kth smallest element?
ASkip entire subtrees to reach Kth element faster
BAvoid traversing the tree
CSort the tree nodes
DConvert BST to array
✗ Incorrect
Knowing subtree sizes lets you decide if Kth element is in left subtree, current node, or right subtree, skipping unnecessary nodes.
Explain how inorder traversal helps find the Kth smallest element in a BST.
Think about the order nodes are visited in inorder traversal.
You got /3 concepts.
Describe one optimization to improve repeated queries for the Kth smallest element in a BST.
Consider extra information stored at each node.
You got /3 concepts.
Practice
(1/5)
1. What does the term kth smallest element in a BST mean?
easy
A. The element that appears in the kth position when BST elements are sorted in ascending order
B. The element with the kth largest value in the BST
C. The element at the kth level of the BST
D. The element with the kth highest frequency in the BST
Solution
Step 1: Understand BST property
A Binary Search Tree (BST) stores elements so that left subtree has smaller values and right subtree has larger values.
Step 2: Define kth smallest element
The kth smallest element is the one that appears in the kth position when all elements are sorted in ascending order.
Final Answer:
The element that appears in the kth position when BST elements are sorted in ascending order -> Option A
Quick Check:
kth smallest = kth in sorted order [OK]
Hint: Think of inorder traversal to get sorted order [OK]
Common Mistakes:
Confusing kth smallest with kth largest
Thinking kth smallest means kth level node
Assuming frequency matters
2. Which of the following C function signatures is correct to find the kth smallest element in a BST node structure struct Node?
easy
A. void kthSmallest(int root, int k);
B. int kthSmallest(struct Node root, int k);
C. int kthSmallest(struct Node* root, int k);
D. int kthSmallest(struct Node* root);
Solution
Step 1: Understand function parameters
The function needs the root pointer to the BST and the integer k to find kth smallest.
Step 2: Check parameter types
Passing struct Node* for root and int for k is correct. Return type should be int for the element value.
Final Answer:
int kthSmallest(struct Node* root, int k); -> Option C
Quick Check:
Correct signature includes pointer and k parameter [OK]
Hint: Use pointer for tree root and int for k [OK]
Common Mistakes:
Passing root by value instead of pointer
Missing k parameter
Wrong return type or missing return
3. Given the BST below and k = 3, what is the output of the function kthSmallest(root, 3)?
5
/ \
3 7
/ \ \
2 4 8
medium
A. 5
B. 4
C. 3
D. 7
Solution
Step 1: Perform inorder traversal
Inorder traversal of BST visits nodes in ascending order: 2, 3, 4, 5, 7, 8.
Step 2: Identify 3rd element in traversal
The 3rd element is 4.
Final Answer:
4 -> Option B
Quick Check:
Inorder 3rd element = 4 [OK]
Hint: Inorder traversal gives sorted order; pick kth element [OK]
Common Mistakes:
Counting nodes incorrectly in traversal
Confusing preorder or postorder with inorder
Choosing root or other node instead of kth
4. Consider this buggy C code snippet to find kth smallest element in BST:
int count = 0;
int kthSmallest(struct Node* root, int k) {
if (!root) return -1;
int left = kthSmallest(root->left, k);
if (left != -1) return left;
count++;
if (count == k) return root->data;
return kthSmallest(root->right, k);
}
What is the main issue with this code?
medium
A. Global variable 'count' causes incorrect results on multiple calls
B. Function does not handle empty tree
C. Returns -1 for valid kth element
D. Does not traverse right subtree
Solution
Step 1: Analyze use of 'count'
The variable 'count' is global and not reset between calls, causing wrong counts if function called multiple times.
Step 2: Understand impact on results
Because 'count' is not reset, subsequent calls may return wrong kth smallest element or fail.
Final Answer:
Global variable 'count' causes incorrect results on multiple calls -> Option A
Quick Check:
Global count not reset breaks repeated calls [OK]
Hint: Avoid global counters; pass as function argument [OK]
Common Mistakes:
Ignoring global variable side effects
Assuming function works for multiple calls
Not resetting count before each call
5. You have a BST with nodes containing duplicate values. How would you modify the standard kth smallest element algorithm to correctly find the kth smallest unique element?
hard
A. Use preorder traversal instead of inorder
B. Count all nodes including duplicates normally
C. Remove duplicates from BST before traversal
D. Use inorder traversal and skip duplicates by comparing with previous visited value
Solution
Step 1: Understand duplicates in BST
Duplicates appear as multiple nodes with same value; inorder traversal visits them in sorted order including duplicates.
Step 2: Modify traversal to skip duplicates
Track previous visited value during inorder traversal; only increment count when current value differs from previous.
Step 3: Find kth unique element
Increment count only for unique values; when count equals k, return current node's value.
Final Answer:
Use inorder traversal and skip duplicates by comparing with previous visited value -> Option D
Quick Check:
Skip duplicates by comparing previous value [OK]
Hint: Track previous value to count unique elements [OK]
Common Mistakes:
Counting duplicates as separate elements
Using preorder traversal which is not sorted
Trying to remove duplicates instead of skipping
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.