二叉樹js的生成

二叉樹的js生成

  1. 二叉樹的概念
    二叉樹概念及相關操做javascript

  2. 本文是順序二叉樹及其操做的js實現,非順序二叉樹應該也差很少,這裏沒有實現java

//基本二叉樹的實現
function BT(){
  this.root=null;
  this.Node=function(e){
    this.value=e;
    this.left=null;
    this.right=null;
  }
  //添加元素
  this.insert=function(e){
    function recursiveAdd(tem,e){
      if(e.value<tem.value){
        if(tem.left==null){
          tem.left=e;
        }else{
          tem=tem.left;
          return recursiveAdd(tem,e);
        }
      }else{
        if(tem.right==null){
          tem.right=e;
        }else{
          tem=tem.right;
          return recursiveAdd(tem,e);
        }
      }
    }
    e=new this.Node(e);
    if(this.root==null){
      this.root=e;
    }else{
      TEM=this.root;
      recursiveAdd(TEM,e);
    }
    return this.root;
  }
  //查找元素
  this.find=function(e){
    function recursiveFind(tem,e){
      if(tem.value==e.value){
        console.log(tem);
        return tem;
      }else{
        if(e.value<tem.value){
          tem=tem.left;
          recursiveFind(tem,e)
        }else{
          if(e.value>tem.value){
            tem=tem.right;
            recursiveFind(tem,e)
          }
        }
      }
    }
    e=new this.Node(e);
    if(this.root==null){
      return;
    }else{
      TEM=this.root;
      recursiveFind(TEM,e);
    }
  }
  //刪除元素
  this.delete=function(e){
    function recursiveDelete(tem,e){
      if(e.value<tem.value){
        if(tem.left==null){
          return;
        }else{
          if(tem.left.value==e.value){
            tem.left=null;
            return;
          }else{
            tem=tem.left;
            recursiveDelete(tem,e)
          }
        }
      }else{
        if(e.value>tem.value){
          if(tem.right==null){
            return;
          }else{
            if(tem.right.value==e.value){
              tem.right=null;
              return;
            }else{
              tem=tem.right;
              recursiveDelete(tem,e)
            }
          }
        }
      }
    }
    e=new this.Node(e);
    if(this.root==e){
      this.root=null;
    }else{
      TEM=this.root;
      recursiveDelete(TEM,e);
    }
  }
}

具體使用方法this

var obj = new BT();
console.time('insertTest');
obj.insert(55);
obj.insert(44);
obj.insert(33);
obj.insert(22);
obj.insert(66);
obj.insert(77);
obj.insert(88);
obj.insert(60);
obj.insert(58);
obj.insert(63);
obj.insert(57);
obj.insert(56);
console.timeEnd('insertTest');
console.time('findTest');
obj.find(63);
console.timeEnd('findTest');
console.time('deleteTest');
obj.delete(57);
console.timeEnd('deleteTest');
相關文章
相關標籤/搜索