插入Trie

时间:2012-10-19 04:15:55

标签: c++ insert trie

我正在尝试为我的trie结构实现插入函数,这是我的结构

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] != '\0'){
      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

2 个答案:

答案 0 :(得分:1)

节点的类型为“Trie”,node.letters [c]的类型为“Trie *”。尝试node = *(node.letters [c]) - 但要确保node.letter [c]不是NULL。

答案 1 :(得分:0)

我认为您不想将节点设置为与您要插入的项目相同。我不清楚节点到底是什么,无论是列表,字典还是别的。如果它是一个字典(这是实现尝试的一种方式)那么显然你将要更新键值对而不是仅仅替换条目。如果是列表,您可能希望附加条目而不是替换它。

编辑: 此外,您似乎从未在节点上创建新的尝试,您只需要在顶层进行27次尝试的数组,当您获得一层深层时会发生什么?