随心情更新的学习笔记——JS代码之树的底层算法实现

这是有上期,没下期,学习看心情,更新看随机的老王的学习笔记,好好看,没有下期了……

 

将输入的第一个数作为根结点,之后插入的每一个数若比当前节点大,则插入在当前结点的右侧,否则插入到当前结点的左侧。

例如这组数[22,19,114,514,1919,14,2]

当前的(根)节点为22

19比当前节点要小,于是插入到22的左边

 接着是114,比根结点要大,于是放在根节点的右边

接着是514,比根结点要大,于是放在根节点的右边;并且514比根结点的右节点114还要大,所以放在114的右边

接着是1919,比根结点、根结点右节点(114)和右节点的右节点(514)都还要大,所以放在514的右边

接着是14,14比根结点22要小,并且比根结点的左节点(19)还要小,所以放在19的左边

最后就是2,比所有的节点都小,所以放在14的左边

附上代码:

function Node(element,left,right) {
        this.element = element;
        this.left=left;
        this.right=right;
        this.next = null;
        this.show = function () {
            return this.element;
        };
    }
    
    function BST() {
        this.root = null;
        this.insert=function (element) {
            var node = new Node(element,null,null);
            if(this.root==null){
                this.root=node;
            }else{
                var parent = this.root;
                while(true){
                    var buffer = parent;
                    if(node.element>this.root.element){
                        parent = parent.right;
                        if(parent==null){
                            buffer.right = node;
                            break;
                        }
                    }else{
                        parent = parent.left;
                        if(parent==null){
                            buffer.left = node;
                            break;
                        }
                    }
                }
            }
        }


    }

    var bst = new BST();

    bst.insert(12);
    bst.insert(9);
    bst.insert(114);
    bst.insert(514);
    bst.insert(14);

    console.log(bst);

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值