1. 程式人生 > >[Algorithm] Construct a Binary Tree and Binary Search

[Algorithm] Construct a Binary Tree and Binary Search

lan bsp nodes arch nsh des and blog while

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.

[Algorithm] Construct a Binary Tree and Binary Search