Inserting to Trie

Inserting to Trie

本文关键字:Trie to Inserting      更新时间:2023-10-16

我正在尝试为我的trie结构实现插入功能,这是我的struct

struct Trie {
  bool isWord;
  char letter;
  Trie *letters[27];
  Trie() {
    isWord = false;
    for ( int i = 0; i < NumChars; i += 1 ) {
      letters[i] = NULL;
    }
  }
}; 

这就是我尝试插入功能的方法

void insertin( Trie &node, const std::string &word )
  {
    int i = 0;
    while (word[i] != ''){
      int c = word[i] - 'a';
      node.letters[c]->letter = word[i];
      node = node.letters[c];
      i++;
    }
    node.isWord = true;
  }

在我设置node = node.letters[c];时获取" =" 运算符的错误,我无法使用" =" 分配相同的类型?还是我必须超负荷。还有一个偶然的错误,任何建议或调试帮助都会有所帮助!..这是我的完整程序http://ideone.com/mqcbo

节点是类型" trie",node.letters [c]类型为" trie*"。尝试node = *(node.letters [c]) - 但请确保node.letter [c]不是null。

我认为您不想将节点设置为等于要插入的项目。我尚不清楚什么是列表,词典还是其他节点。如果它是字典(这是实现尝试的一种方法),那么显然您将要更新键值对,而不仅仅是替换条目。如果您的列表您可能想附加条目而不是更换条目。

编辑:另外,似乎您永远不会在节点上创建新尝试,只有27次尝试在顶级,当您深入一层时会发生什么?