joe*_*llz 3 c trie data-structures
我试图在C中实现节省空间的特里结构。这是我的结构:
struct node {
char val; //character stored in node
int key; //key value if this character is an end of word
struct node* children[256];
};
Run Code Online (Sandbox Code Playgroud)
当我添加节点时,它的索引是字符的无符号字符。例如,如果我要添加“ c”,则
children[(unsigned char)'c']
Run Code Online (Sandbox Code Playgroud)
是指向新添加的节点的指针。但是,此实现要求我声明一个由256个元素组成的node *数组。我想做的是:
struct node** children;
Run Code Online (Sandbox Code Playgroud)
然后在添加节点时,只需为该节点分配空间并具有
children[(unsigned char)'c']
Run Code Online (Sandbox Code Playgroud)
指向新节点。问题是,如果我不首先为孩子分配空间,那么我显然不能引用任何索引,否则那将是一个很大的错误。
所以我的问题是:如何实现特里使它只存储指向其子代的非null指针?
小智 5
您可以尝试使用de la Briandais trie,其中每个节点只有一个子指针,并且每个节点也都有一个指向“兄弟姐妹”的指针,这样所有兄弟姐妹都有效地存储为链接列表,而不是直接指向由父母。