louzhedong / blog

前端基础,深入以及算法数据结构
934 stars 84 forks source link

构建二叉搜索树 #192

Open louzhedong opened 4 years ago

louzhedong commented 4 years ago

搜索二叉树

搜索二叉树是这么一种树,对于任何一个节点来说,它的左子树的值肯定小于它的值,它的右子树的值肯定大于它的值

实现

function Node(val) {
  this.left = null;
  this.right = null;
  this.value = val;
}

function generateBST(root,array) {
  var length = array.length;

  for (var i = 1; i < length; i ++) {
    insertNode(root, array[i]);
  }
}

function insertNode(node, value) {
  if (value < node.value) {
    if (node.left === null) {
      node.left = new Node(value);
    } else {
      node = node.left;
      insertNode(node, value);
    }
  } else {
    if (node.right === null) {
      node.right = new Node(value);
    } else {
      node = node.right;
      insertNode(node, value);
    }
  }
}

var array = [2, 3, 4, 12, 3, 54, 6, 7, 1];
var root = new Node(array[0]);

generateBST(root, array);

console.log(array);