JavaScript数据结构23—排序二叉树

本示例表现了排序二叉树的三种操作
查找,删除,插入

//二叉排序树
function BtreeNode(data) {
  this.data = data;
}
BtreeNode.prototype.setL = function(node){
  this.lchild = node;
}
BtreeNode.prototype.setR = function(node){
  this.rchild = node;
}
BtreeNode.prototype.search = function(key){
  if(key == this.data){
    return {find:true,node:this};
  }else if(key < this.data){
    if(!this.lchild){
      return {find:false,node:this};
    }
    return this.lchild.search(key);
  }else{
    if(!this.rchild){
      return {find:false,node:this};
    }
    return this.rchild.search(key);
  }
}
BtreeNode.prototype.insert = function(key){
  var searchResult = this.search(key);
  if(!searchResult.find){
    var s = new BtreeNode(key);
    if(keykey){
    this.lchild.deleteKey(key);
  }else{
    this.rchild.deleteKey(key);
  }
}
var array1 = [];
for (var i = 0; i < 5000; i++) {
  array1[i] = parseInt(Math.random()*100000)+1;
}
var b = new BtreeNode(50000);
for (var i = 0; i < array1.length; i++) {
  b.insert(array1[i]);
}
console.info(array1[2]);
console.info(b.search(array1[2]));
b.deleteKey(array1[2]);
console.info(b.search(array1[2]));

OUTPUT

99209
{ find: true,
node:
BtreeNode {
data: 99209,
lchild: BtreeNode { data: 95537, rchild: [Object], lchild: [Object] },
rchild: BtreeNode { data: 99387, rchild: [Object], lchild: [Object] } } }
{ find: false, node: BtreeNode { data: 99191 } }
[Finished in 0.1s]

你可能感兴趣的:(JavaScript数据结构23—排序二叉树)