我正在尝试在C语言中实现一个空间高效的Trie树。这是我的结构体:
struct node {
char val; //character stored in node
int key; //key value if this character is an end of word
struct node* children[256];
};
当我添加一个节点时,它的索引是字符的无符号char转换而来。例如,如果我想添加“c”,那么
children[(unsigned char)'c']
这个指针是指向新添加的节点。然而,这种实现方式需要我声明一个256个元素的node*数组。我想要做的是:
struct node** children;
当添加一个节点时,只需为该节点分配空间并进行malloc操作。
children[(unsigned char)'c']
指向新节点。问题在于,如果我不先为孩子们分配空间,那么我显然无法引用任何索引,否则就会出现大错误。
所以我的问题是:我如何实现一个trie,以便它只存储对其子级的非空指针?
children
是否为 NULL? - Drakosha