trie树实际上是一种多叉树的应用,Trie树是用来解决,搜索引擎中,输入前缀可以给出提示词的非常好的解决方案
在实现trie书算法以前,我们先回顾温习下,多叉树的实现和遍历(对于我们trie树的实现和便利帮助很大),这里就不说普通二叉树,因为原理一样,但相对简单
下面是算法实现,这个算法参考了这本书中的描述和定义,用了一个很节省空间的结构定义
并没有在父节点中存储所有的子节点,而是存储了节点的链表,一般叫做二叉链表法,这样算法看起来非常像二叉树了
#include
#include
#define maxsize 100
typedef struct node
{
char *data;
struct node *first_child,*next_sibling;//fc是第一个孩子,nb是fc的临节点
} tree;
/**
a
/ \ \
b c d
/\ \
e f g
创建出来的树结构如上
*/
tree *insertTree(char *ch, tree *parent, tree *pre_sibling) {
tree *child = (tree *)malloc(sizeof(tree));
child->data = ch;
if (parent != NULL) parent->first_child = child;
if (pre_sibling != NULL) pre_sibling->next_sibling = child;
child->first_child = NULL;
child