BinaryTree in JavaScript

Run Settings
LanguageJavaScript
Language Version
Run Command
class Node { constructor(value) { this.left = null; this.right = null; this.value = value; } } class BinarySearchTree { constructor() { this.root = null; } insert(value) { const newNode = new Node(value); if (this.root === null) { this.root = newNode; return this; } let parent = this.root; while(true) { if (parent.value > value) { // Left if (parent.left !== null) { parent = parent.left; } else { parent.left = newNode; return this; } } else { // Right if (parent.right !== null) { parent = parent.right; } else { parent.right = newNode; return this; } } } } lookup(value) { let currentNode = this.root; while(currentNode !== null) { if (currentNode.value === value) { return currentNode; } if (currentNode.value > value) { currentNode = currentNode.left; } else { currentNode = currentNode.right; } } console.log("Not found " + value); return this; } remove(value) { } } const tree = new BinarySearchTree(); tree.insert(9); tree.insert(4); tree.insert(6); tree.insert(20); tree.insert(170); tree.insert(15); tree.insert(1); console.log("Found " + tree.lookup(15).value); console.log(tree); JSON.stringify(traverse(tree.root)); console.log(tree.lookup(20)); // 9 // 4 20 //1 6 15 170 function traverse(node) { const tree = { value: node.value }; tree.left = node.left === null ? null : traverse(node.left); tree.right = node.right === null ? null : traverse(node.right); return tree; }
Editor Settings
Theme
Key bindings
Full width
Lines