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.

  • 相关阅读:
    jsp实现登陆功能小实验
    netty
    shiro
    mybatis
    spring MVC
    spring
    集合框架面试题
    Redis面试题
    Dubbo面试题汇总
    阿里面试题
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10388338.html
Copyright © 2011-2022 走看看