Loading algorithms…

Loading visualizer…

Algorithms/Tree/Binary Search Tree

Binary Search Tree

TreeMedium

Insert, search, delete, and traverse with step-by-step tree snapshots

Classic balanced BST — search, insert, and delete all take ~O(log n) steps.

Active Path VisitedBF = balance factor (height left − height right)BF:0balancedBF:±1slight skewBF:±2+unbalanced
bst.js
1class BSTNode {
2 constructor(value) {
3 this.value = value;
4 this.left = this.right = null;
5 }
6}
7 
8function search(node, target) {
9 if (!node) return null;
10 if (target === node.value) return node;
11 if (target < node.value) return search(node.left, target);
12 return search(node.right, target);
13}
14 
15function insert(node, value) {
16 if (!node) return new BSTNode(value);
17 if (value < node.value) node.left = insert(node.left, value);
18 else if (value > node.value) node.right = insert(node.right, value);
19 return node;
20}
21 
22function deleteNode(node, target) {
23 if (!node) return null;
24 if (target < node.value) node.left = deleteNode(node.left, target);
25 else if (target > node.value) node.right = deleteNode(node.right, target);
26 else {
27 if (!node.left) return node.right;
28 if (!node.right) return node.left;
29 const succ = minNode(node.right);
30 node.value = succ.value;
31 node.right = deleteNode(node.right, succ.value);
32 }
33 return node;
34}
35 
36function inorder(node) {
37 if (!node) return;
38 inorder(node.left); visit(node); inorder(node.right);
39}
←Previous Algorithm
Coin Change
Dynamic ProgrammingO(n·amount)
Next Algorithm→
AVL Tree
O(log n)Tree