我想在c中制作一个trie,现在我的基本数据结构是什么样的..
struct node{
int count; no of times this node has been visited.
struct node* child[ALPHABET_SIZE]; // Let ALPHABET_SIZE be 26
}
当字符串大小变大时,浪费了大量分配的内存.就像我们插入“他”
我们的树会
root---->h--->e
|--->e
我们看到在root用户只分配了2/26的内存.如何提高 ??.
最佳答案 一些非常基本的建议:
>如果您的分支因子预计较低,请考虑为孩子使用数组以外的其他内容.例如,您可以拥有一个字母到节点*对的数组,并对它们进行线性或二进制搜索(如果它们是有序的).您还可以使用某种地图.
>如果您不希望计数数百万/十亿,您也可以使用较小的整数来计算.
>您可以从基于竞技场的分配器(即对象池)获取节点,而不是动态分配节点,从而避免经常添加到堆上分配的对象的堆分配开销.