const root = new TreeNode(1); const node2 = new TreeNode(2); const node3 = new TreeNode(3); const node4 = new TreeNode(4); const node5 = new TreeNode(5);
insert(value) { const newNode = new TreeNode(value); if (this.root === null) { this.root = newNode; returnthis; } else { let current = this.root; while (true) { if (value === current.value) returnundefined; if (value < current.value) { if (current.left === null) { current.left = newNode; returnthis; } else { current = current.left; } } elseif (value > current.value) { if (current.right === null) { current.right = newNode; returnthis; } else { current = current.right; } } } } }
find(value) { if (this.root === null) returnfalse; let current = this.root; let found = false; while (current && !found) { if (value < current.value) { current = current.left; } elseif (value > current.value) { current = current.right; } else { found = true; } } if (!found) returnfalse; return current; }
remove(value) { if (this.root === null) returnfalse; let current = this.root; let parent = null; let found = false; while (current && !found) { if (value < current.value) { parent = current; current = current.left; } elseif (value > current.value) { parent = current; current = current.right; } else { found = true; } } if (!found) returnfalse; if (current.left === null && current.right === null) { if (current.value < parent.value) { parent.left = null; } elseif (current.value > parent.value) { parent.right = null; } } elseif (current.left === null) { if (current.value < parent.value) { parent.left = current.right; } elseif (current.value > parent.value) { parent.right = current.right; } } elseif (current.right === null) { if (current.value < parent.value) { parent.left = current.left; } elseif (current.value > parent.value) { parent.right = current.left; } } else { let temp = current.right; while (temp.left !== null) { temp = temp.left; } current.value = temp.value; if (temp.right === null) { temp = null; } else { temp.value = temp.right.value; temp.right = null; } } } }