zoukankan      html  css  js  c++  java
  • [Algorithm] Construct a Binary Tree and Binary Search

    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.

  • 相关阅读:
    简单小巧的跨平台共享内存代码
    调试发行版程序 (二)
    休息日公园独步偶得
    Minimum Depth of Binary Tree
    LeetCode Length of Last word
    黑书 折纸痕 uva 177
    Palindrome Partitioning II leetcode
    Acumem ThreadSpotter
    C++ string int 转换 split
    Valid Palindrome Leetcode
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10388338.html
Copyright © 2011-2022 走看看