[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();
t.add();
t.add();
t.add();
t.add();
t.add();
t.add();
console.log(t.search());
About how to traverse binary tree, can refer this post.
[Algorithm] Construct a Binary Tree and Binary Search的更多相关文章
- 将百分制转换为5分制的算法   Binary Search Tree ordered binary tree sorted binary tree Huffman Tree
		1.二叉搜索树:去一个陌生的城市问路到目的地: for each node, all elements in its left subtree are less-or-equal to the nod ... 
- [Algorithm] Check if a binary tree is binary search tree or not
		What is Binary Search Tree (BST) A binary tree in which for each node, value of all the nodes in lef ... 
- What is the difference between a binary tree, a binary search tree, a B tree and a B+ tree?
		Binary Tree : It is a tree data structure in which each node has at most two children. As such there ... 
- Binary Tree和Binary Search Tree
		Binary TreeDefinition: at most two children node. Binary Tree Example: 10 ==root / \ 13 ... 
- [Leetcode][JAVA] Minimum Depth of Binary Tree && Balanced Binary Tree && Maximum Depth of Binary Tree
		Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum depth is the n ... 
- 33. Minimum Depth of Binary Tree  &&  Balanced Binary Tree  && Maximum Depth of Binary Tree
		Minimum Depth of Binary Tree OJ: https://oj.leetcode.com/problems/minimum-depth-of-binary-tree/ Give ... 
- [Algorithm] Construct String from Binary Tree
		You need to construct a string consists of parenthesis and integers from a binary tree with the preo ... 
- 九章算法系列(#3 Binary Tree & Divide Conquer)-课堂笔记
		前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode ... 
- Binary Tree Longest Consecutive Sequence
		Given a binary tree, find the length of the longest consecutive sequence path (连续的路径,不是从小到大). The pa ... 
随机推荐
- java抽象类、多态、接口
			抽象类 抽象类的产生 当编写一个类时,我们往往会为该类定义一些方法,这些方法是用来描述该类的功能具体实现方式,那么这些方法都有具体的方法体. 但是有的时候,某个父类只是知道子类应该包含怎么样的方法,但 ... 
- FastReport.Net使用:[17]线(Line)控件使用
			FastReport中,线(Line)控件怎么用?怎么画一条美观的线? 认识Line控件 1.线(Line)控件包含于形状(Shape)控件中,有5个可选项,一个标准线和四个对角线,其实都是同一种线, ... 
- Cookie&Session会话技术
			一.会话技术简介 1.存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客 ... 
- hdu 3294 manacher 求回文串
			感谢: http://blog.csdn.net/ggggiqnypgjg/article/details/6645824/ O(n)求给定字符串的以每个位置为中心的回文串长度. 中心思想:每次计算位 ... 
- Effective Java部分读书笔记
			2.创建和销毁对象 1.使用静态工厂方法代替构造器 一般使用构造器(构造函数)创建对象实例,还可以使用静态工厂方法来创建对象实例. 优点 使用静态工厂方法代替构造器创建对象实例有以下优点: 1)静态构 ... 
- ThinkPHP -- 基础入门
			ThinkPHP文件结构说明: |——ThinkPHP.php 框架入口文件 |——Common 框架公共文件目录 |——Conf ... 
- Ubuntu14.04环境下配置TFTP服务器
			<<<<<<<<<<<<<<<<<<<<<<<<< ... 
- NFC TI TRF7970A Breakout Board for BusPirate or other HW
			http://dangerousprototypes.com/forum/viewtopic.php?f=19&t=3187 Just a news about a new Hardware ... 
- DC-DC converter Control techniques
			As shown in figure 3.4, PWM controller contains two main parts; voltage error-amplifier and voltage ... 
- 一、 Log4E插件下载
			下载地址:http://log4e.jayefem.de/content/view/3/2/ 二.安装Log4E插件 将下载下来的压缩包解压缩,如下图所示: 解压缩生成的[de.jayefem.log ... 
