function createNode(value) { return { value,left: null,right: null }; } function BinaryTree(val) { return { root: null,nodes: [],add(val) { const node = createNode(val); if (!this.root) { this.root = node; } else { this.downShift(node); } this.nodes.push(node); },downShift(node) { let value = node.value; let current = this.root; while (current) { if (value > current.value) { if (!current.right) { current.right = node; break; } else { current = current.right; } } else { if (!current.left) { current.left = node; break; } else { current = current.left; } } } },size() { return this.nodes.length; },search(target) { let found = false; let current = this.root; while (current) { if (target > current.value) { if (!current.right) { return "Not Found"; } current = current.right; } else if (target < current.value) { if (!current.left) { return "Not Found"; } current = current.left; } else { found = true; break; } } return found; } }; } const t = new BinaryTree(); t.add(4); t.add(7); t.add(3); t.add(1); t.add(9); t.add(2); t.add(5); console.log(t.search(8));
About how to traverse binary tree,can refer this post.