在Trie实现中出错(Javascript)

时间:2018-06-03 22:30:40

标签: javascript tree trie

我正在实现Trie算法的添加功能,但它给了我以下错误:

未捕获的TypeError:节点不是构造函数

...在此代码行中:

node.children[char_pos]=new Array(string[0], new node());

拜托,你能告诉我发生了什么吗?

我感谢任何帮助。

这是我的代码:

var node = function(){

    this.children= new Array(26);
    this.last_char=false;
};

function add(word, node){

    char_pos=word.charCodeAt(0) - 'a'.charCodeAt(0);

    if(word.length==1){

        if(node.children[char_pos]==null){ 

            node.children[char_pos]=word[0];
            node.last_char=true;
            return;

        }else{
            return;
        };

    }else{

        if(node.children[char_pos]==null){ 
            node.children[char_pos]=new Array(word[0], new node());
        };
    };

    word=word.substring(1);
    add(word, node.children[char_pos][1]);
};

1 个答案:

答案 0 :(得分:1)

首先说明

var node // = ...

然后

function add(word, node){

我想你会用一些实例的节点,一个节点,而不是你的节点构造函数来调用。

在您的功能添加中,标识符 节点解析为您的参数“node”,具有相同标识符的构造函数不可用于这里。 你会写node = new node()你会失去节点功能吗?

标准通过命名您的构造函数或类的第一个大写字母(如Node)和Node的实例节点来帮助您解决这个问题,这样您就不会覆盖您的标识符

事实上,你真的应该选择尚未使用的标识符,因为你会覆盖它们,并使得后者不可用。