如何在js中访问函数值

时间:2017-10-07 19:44:13

标签: javascript

我有一个js函数,我正在尝试实现二叉树。我有一个创建节点的函数,它是左边的,它是正确的子节点,就像这样

bst.prototype.cNode = function (x_) {
    this.node = x_;
    this.left = null;
    this.right = null;
};

var a = new bst(); 
a.cNode(5);

这给了我第一个节点,它左右。

接下来我试图用当前节点值推送左/右子检查是否大于节点或更小节点如此

a.pushChild(2);


//
function bst(){

    this.pushChild = function(w_){

        if(w_ < this.node){
            if(this.left == null){
                this.left = new this.cNode(w_);
            }
            else{
                this.pushChild(w_);
            }
        }
        else if(w_ > this.node){
            if(this.right == null){
                this.right = new this.cNode(w_);
            }
            else{

            }
        }

    }


}

它给了我Maximun堆栈错误,因为它在无限循环中被触发,因为它总是检查第一个this.node和this.left和this.right但是this.left和this.right也有this.node, ths.left,this.right我也想检查一下,不是第一个。

如何检查最新值而不是第一个节点,左,右值?

1 个答案:

答案 0 :(得分:0)

您在第一个节点上反复调用该函数,而是根据需要在左侧或右侧节点上调用它:

this.pushChild = function(w_){

    if(w_ < this.node){
        if(this.left == null){
            this.left = new this.cNode(w_);
        }
        else{
            this.left.pushChild(w_);
        }
    }
    else if(w_ > this.node){
        if(this.right == null){
            this.right = new this.cNode(w_);
        }
        else{
            this.right.pushChild(w_);
        }
    }