A. void findTwoSum(struct TreeNode root, int target);
B. int findTwoSum(struct TreeNode* root, int* target);
C. int findTwoSum(struct TreeNode root, int target);
D. int findTwoSum(struct TreeNode* root, int target);
Solution
Step 1: Check function parameter types
The BST root should be passed as a pointer to struct TreeNode, and target as int.
Step 2: Verify return type and parameters
int findTwoSum(struct TreeNode* root, int target); correctly declares return type int, pointer to root, and int target.
Final Answer:
int findTwoSum(struct TreeNode* root, int target); -> Option D
Quick Check:
Function signature with pointer root and int target = int findTwoSum(struct TreeNode* root, int target); [OK]
Hint: Use pointer for tree root in function parameters [OK]
Common Mistakes:
Passing struct by value instead of pointer
Using void return type when int is needed
Passing target as pointer unnecessarily
3. What will be the output of the following code snippet?
// BST nodes: 5, 3, 6, 2, 4, 7
// Target sum = 9
int main() {
// Assume createBST() creates the BST with given nodes
struct TreeNode* root = createBST();
int target = 9;
int result = findTwoSum(root, target);
printf("%d\n", result);
return 0;
}
// findTwoSum returns 1 if pair found, else 0
medium
A. 1
B. 0
C. Compilation error
D. Runtime error
Solution
Step 1: Identify pairs in BST that sum to target
Pairs like (2,7) and (3,6) sum to 9 in the BST.
Step 2: Check if findTwoSum returns 1 when pair exists
Since pairs exist, function returns 1 and prints it.
Final Answer:
1 -> Option A
Quick Check:
Pair found = 1 [OK]
Hint: Check if any two nodes sum to target [OK]
Common Mistakes:
Assuming no pairs exist
Confusing return values
Ignoring BST structure
4. Identify the bug in the following code snippet for Two Sum in BST:
int findTwoSum(struct TreeNode* root, int target) {
if (!root) return 0;
int complement = target - root->val;
if (searchBST(root, complement)) {
return 1;
}
return findTwoSum(root->left, target) || findTwoSum(root->right, target);
}
// searchBST searches for a value in BST
medium
A. It uses wrong target value in recursion.
B. It may count the same node twice as complement.
C. It does not check if root is NULL.
D. It misses checking the left subtree.
Solution
Step 1: Analyze complement calculation and search
The code searches for complement in the whole tree including current node.
Step 2: Identify issue with counting same node twice
If complement equals root->val, it may count the same node twice incorrectly.
Final Answer:
It may count the same node twice as complement. -> Option B
Quick Check:
Same node counted twice bug = It may count the same node twice as complement. [OK]
Hint: Avoid counting current node as complement [OK]
Common Mistakes:
Not excluding current node in search
Ignoring NULL checks
Wrong recursion parameters
5. Given a BST with nodes [10, 5, 15, 3, 7, 18] and target sum 22, which pair of nodes will the Two Sum in BST algorithm find first if it uses in-order traversal and a hash set to track visited values?
hard
A. (7, 15)
B. (5, 17)
C. (3, 19)
D. (10, 12)
Solution
Step 1: Perform in-order traversal and track visited nodes