我需要实现一个trie结构,以存储大约30k字符串。 现在,特里结构看起来像这样
struct TrieNode {
bool isWord=false;
struct TrieNode* children[256];
};
对于每个节点,由于固定大小的数组,我分配了太多的空间,因此由于占用大量内存,我的程序崩溃了。 对于这个问题,我无法使用地图,这是我到目前为止找到的唯一解决方案。还有其他提示吗?
谢谢。
答案 0 :(得分:2)
使用std::unordered_map<char, TrieNode>
而不是TrieNode *
数组。
如果您需要对子级进行排序,请使用std::map<char, TrieNode>
。
如果不允许使用STL,请自己实现哈希图或平衡的二叉树类。