在C中创建trie / suffix树时减少内存使用量

我想在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的内存.如何提高 ??.

最佳答案 一些非常基本的建议:

>如果您的分支因子预计较低,请考虑为孩子使用数组以外的其他内容.例如,您可以拥有一个字母到节点*对的数组,并对它们进行线性或二进制搜索(如果它们是有序的).您还可以使用某种地图.
>如果您不希望计数数百万/十亿,您也可以使用较小的整数来计算.
>您可以从基于竞技场的分配器(即对象池)获取节点,而不是动态分配节点,从而避免经常添加到堆上分配的对象的堆分配开销.

点赞