js二分查找树实现

二叉查找数由节点组成,我们要定义的第一个对象就是node,该对象和前面介绍链表时的对象类似,node类的定义如下
function Node(data,left,right){
    this.data = data;
    this.left = left;
    this.right = right;
    this.show = show

}

function show(){
   return this.data;
}

现在创建一个类,用来表示二叉树(BST) 。我们让类只包含一个数据成员:一个表示二叉树查找树节点的node对象。该类的构造函数将跟节点初始化为 null,以此创建一个空节点。

1.BST首先有一个insert() 方法用来像数组中加入新节点。

2.检查BST是否有根节点,如果没有,那么这是课新树,该节点就是跟节点

3.如果插入的节点不是根节点,那么就需要准备遍历BST,找到插入的适当位置,该过程类似遍历链表。用一个变量存储当前节点,一层一层地遍历BST

进入BST以后,下一步就是决定将节点放在哪个地方。找到正确的插入点时,会跳出循环

(1)设根节点为当前节点

(2)如果待插入节点保存的数据小于当前节点,则设新的当前节点为原节点的左节点

(3)如果当前节点的左节点为null,就将新的节点插入这个位置,退出循环,反之,继续执行下一循环

(4)设新的当前节点为原节点的右节点

(5)如果执行当前节点的右节点为null,就将新的节点插入这个位置,退出循环,反之,继续执行下一次循环

function BST(){
    this.root = null;
    this.insert = insert;
    this.inOrder = inOrder;
}

function insert(data){
    var n = new Node(data,null,null)
    if(this.root == null){
        this.root = n
    }else {
        var current = this.root;
        var parent 
        while(true){
            parent = current;
            if(data < current.data){
                current = current.left
                if(current == null){
                    parent.left = n
                    break;
                }
            } else{
                current = current.right;
                if(current == null){
                    parent.right = n;
                    break;
                }
            }
        }

    }
}

 

 

 

 

 

转载于:https://www.cnblogs.com/kbnet/p/10242025.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值