Skip to content

Binary Tree Search

class Node {
value: number;
left: Node | null;
right: Node | null;
constructor(value: number) {
this.value = value;
this.left = null;
this.right = null;
}
}
class BinarySearchTree {
root: Node | null;
constructor() {
this.root = null;
}
// Insert a value
insert(value: number): void {
const newNode = new Node(value);
if (this.root === null) {
this.root = newNode;
return;
}
let current = this.root;
while (true) {
if (value < current.value) {
if (current.left === null) {
current.left = newNode;
break;
}
current = current.left;
} else {
if (current.right === null) {
current.right = newNode;
break;
}
current = current.right;
}
}
}
// Search for a value
search(value: number): boolean {
let current = this.root;
while (current !== null) {
if (value === current.value) return true;
current = value < current.value ? current.left : current.right;
}
return false;
}
}
const bst = new BinarySearchTree();
bst.insert(10);
bst.insert(5);
bst.insert(15);
console.log(bst.search(5)); // Output: true
console.log(bst.search(7)); // Output: false