0
0
DSA Typescriptprogramming~20 mins

BST Search Operation in DSA Typescript - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
BST Search Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of BST Search for Existing Value
What will be the output of the following TypeScript code that searches for a value in a Binary Search Tree?
DSA Typescript
class Node {
  value: number;
  left: Node | null = null;
  right: Node | null = null;
  constructor(value: number) {
    this.value = value;
  }
}

class BST {
  root: Node | null = null;

  insert(value: number) {
    const newNode = new Node(value);
    if (!this.root) {
      this.root = newNode;
      return;
    }
    let current = this.root;
    while (true) {
      if (value < current.value) {
        if (!current.left) {
          current.left = newNode;
          return;
        }
        current = current.left;
      } else {
        if (!current.right) {
          current.right = newNode;
          return;
        }
        current = current.right;
      }
    }
  }

  search(value: number): boolean {
    let current = this.root;
    while (current) {
      if (value === current.value) return true;
      if (value < current.value) current = current.left;
      else current = current.right;
    }
    return false;
  }
}

const tree = new BST();
tree.insert(10);
tree.insert(5);
tree.insert(15);
tree.insert(3);
tree.insert(7);

console.log(tree.search(7));
Afalse
Btrue
Cundefined
DTypeError
Attempts:
2 left
💡 Hint
Think about whether the value 7 exists in the tree after insertion.
Predict Output
intermediate
2:00remaining
Output of BST Search for Non-Existing Value
What will be the output of the following TypeScript code that searches for a value not present in the Binary Search Tree?
DSA Typescript
class Node {
  value: number;
  left: Node | null = null;
  right: Node | null = null;
  constructor(value: number) {
    this.value = value;
  }
}

class BST {
  root: Node | null = null;

  insert(value: number) {
    const newNode = new Node(value);
    if (!this.root) {
      this.root = newNode;
      return;
    }
    let current = this.root;
    while (true) {
      if (value < current.value) {
        if (!current.left) {
          current.left = newNode;
          return;
        }
        current = current.left;
      } else {
        if (!current.right) {
          current.right = newNode;
          return;
        }
        current = current.right;
      }
    }
  }

  search(value: number): boolean {
    let current = this.root;
    while (current) {
      if (value === current.value) return true;
      if (value < current.value) current = current.left;
      else current = current.right;
    }
    return false;
  }
}

const tree = new BST();
tree.insert(10);
tree.insert(5);
tree.insert(15);
tree.insert(3);
tree.insert(7);

console.log(tree.search(8));
Aundefined
Btrue
Cfalse
DReferenceError
Attempts:
2 left
💡 Hint
Check if 8 was inserted into the tree before searching.
🧠 Conceptual
advanced
2:00remaining
Understanding BST Search Path
In a Binary Search Tree, when searching for the value 12, which path will the search follow given the tree below? Tree structure: - Root: 10 - Left child of 10: 5 - Right child of 10: 15 - Left child of 15: 12 - Right child of 15: 20 Choose the correct sequence of nodes visited during the search for 12.
A10 -> 12
B10 -> 5 -> 12
C10 -> 15 -> 20
D10 -> 15 -> 12
Attempts:
2 left
💡 Hint
Remember that in BST, values less than current node go left, greater go right.
Predict Output
advanced
2:00remaining
Output of BST Search with Null Root
What will be the output of the following TypeScript code when searching in an empty Binary Search Tree?
DSA Typescript
class Node {
  value: number;
  left: Node | null = null;
  right: Node | null = null;
  constructor(value: number) {
    this.value = value;
  }
}

class BST {
  root: Node | null = null;

  search(value: number): boolean {
    let current = this.root;
    while (current) {
      if (value === current.value) return true;
      if (value < current.value) current = current.left;
      else current = current.right;
    }
    return false;
  }
}

const tree = new BST();
console.log(tree.search(5));
Afalse
BTypeError
Ctrue
Dundefined
Attempts:
2 left
💡 Hint
The tree is empty, so no nodes exist to find any value.
Predict Output
expert
3:00remaining
Output of BST Search After Multiple Insertions and Searches
Consider the following TypeScript code that inserts multiple values into a BST and then searches for several values. What will be the output printed to the console?
DSA Typescript
class Node {
  value: number;
  left: Node | null = null;
  right: Node | null = null;
  constructor(value: number) {
    this.value = value;
  }
}

class BST {
  root: Node | null = null;

  insert(value: number) {
    const newNode = new Node(value);
    if (!this.root) {
      this.root = newNode;
      return;
    }
    let current = this.root;
    while (true) {
      if (value < current.value) {
        if (!current.left) {
          current.left = newNode;
          return;
        }
        current = current.left;
      } else {
        if (!current.right) {
          current.right = newNode;
          return;
        }
        current = current.right;
      }
    }
  }

  search(value: number): boolean {
    let current = this.root;
    while (current) {
      if (value === current.value) return true;
      if (value < current.value) current = current.left;
      else current = current.right;
    }
    return false;
  }
}

const tree = new BST();
tree.insert(20);
tree.insert(10);
tree.insert(30);
tree.insert(25);
tree.insert(35);
tree.insert(5);
tree.insert(15);

console.log(tree.search(15));
console.log(tree.search(40));
console.log(tree.search(5));
console.log(tree.search(17));
A
true
false
true
false
B
false
false
true
false
C
true
true
true
false
D
true
false
false
true
Attempts:
2 left
💡 Hint
Check each searched value against the inserted values carefully.