javascript - Trie 实现中出现错误(Javascript)

标签 javascript tree trie

我正在实现 Trie 算法的 add 函数,但它给了我以下错误:

未捕获类型错误:节点不是构造函数

...在此代码行中:

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]);
};

最佳答案

首先你声明

var node // = ...

然后

function add(word, node){

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

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

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

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

关于javascript - Trie 实现中出现错误(Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50671558/

相关文章:

javascript - 如何检查字符是否是Javascript中的字母?

javascript - 添加选项以在 HTML 中从 Jquery 中选择不工作

javascript - 无法从 IE8 中的循环中获取值

C数据结构到磁盘

c - Speller - 卸载特里树 - 功能无法正常工作

database-design - 你如何在关系数据库中存储一个 trie?

javascript - 如何动态过滤对象?

data-structures - m-way树的实际使用

haskell - 仅在叶子上具有值的树

algorithm - 您如何更改 Trie 以支持按受欢迎程度(某种权重)显示结果?