0
0
DSA Typescriptprogramming~20 mins

Two Sum in BST in DSA Typescript - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Two Sum in BST Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of Two Sum in BST with target 9
Given the BST and target = 9, what is the output of the Two Sum function that returns true if two nodes sum to the target?
DSA Typescript
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    this.val = val === undefined ? 0 : val;
    this.left = left === undefined ? null : left;
    this.right = right === undefined ? null : right;
  }
}

function findTarget(root: TreeNode | null, k: number): boolean {
  const set = new Set<number>();
  function dfs(node: TreeNode | null): boolean {
    if (!node) return false;
    if (set.has(k - node.val)) return true;
    set.add(node.val);
    return dfs(node.left) || dfs(node.right);
  }
  return dfs(root);
}

// BST:
//       5
//      / \
//     3   6
//    / \   \
//   2   4   7

const root = new TreeNode(5,
  new TreeNode(3,
    new TreeNode(2),
    new TreeNode(4)
  ),
  new TreeNode(6,null,new TreeNode(7))
);

console.log(findTarget(root, 9));
Atrue
Bfalse
Cundefined
DTypeError
Attempts:
2 left
💡 Hint
Think about checking if the complement (target - current node value) exists in a set while traversing.
🧠 Conceptual
intermediate
1:00remaining
What data structure is best for checking complements in Two Sum in BST?
In the Two Sum problem on a BST, which data structure allows efficient checking if the complement (target - current node value) has been seen before?
AArray
BQueue
CStack
DSet
Attempts:
2 left
💡 Hint
You want fast lookup to check if a value exists.
🔧 Debug
advanced
1:30remaining
Identify the error in this Two Sum in BST code snippet
What error will this TypeScript code produce when run?
DSA Typescript
function findTarget(root: TreeNode | null, k: number): boolean {
  const set = new Set<number>();
  function dfs(node: TreeNode | null): boolean {
    if (!node) return false;
    if (set.has(k - node.val)) return true;
    set.add(node.val);
    return dfs(node.left) && dfs(node.right);
  }
  return dfs(root);
}
AAlways returns false
BReturns true only if both left and right subtrees have pairs summing to k
CReturns true if two nodes sum to k
DThrows a runtime error
Attempts:
2 left
💡 Hint
Check the logical operator used to combine recursive calls.
Predict Output
advanced
2:00remaining
Output of Two Sum in BST with target 28
Given the BST below and target = 28, what is the output of the Two Sum function?
DSA Typescript
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    this.val = val === undefined ? 0 : val;
    this.left = left === undefined ? null : left;
    this.right = right === undefined ? null : right;
  }
}

function findTarget(root: TreeNode | null, k: number): boolean {
  const set = new Set<number>();
  function dfs(node: TreeNode | null): boolean {
    if (!node) return false;
    if (set.has(k - node.val)) return true;
    set.add(node.val);
    return dfs(node.left) || dfs(node.right);
  }
  return dfs(root);
}

// BST:
//       10
//      /  \
//     5    15
//    / \     \
//   3   7     18

const root = new TreeNode(10,
  new TreeNode(5,
    new TreeNode(3),
    new TreeNode(7)
  ),
  new TreeNode(15,null,new TreeNode(18))
);

console.log(findTarget(root, 28));
Atrue
BTypeError
Cundefined
Dfalse
Attempts:
2 left
💡 Hint
Check if any two nodes sum to 28.
🧠 Conceptual
expert
1:00remaining
Time complexity of Two Sum in BST using DFS and Set
What is the time complexity of the Two Sum in BST algorithm that uses DFS traversal and a Set to check complements?
AO(n^2)
BO(n log n)
CO(n)
DO(log n)
Attempts:
2 left
💡 Hint
Consider that each node is visited once and set lookups are O(1).