算法10---二叉搜索树之基数树
基数树是用来保存和排列字符串,关于字典序有两条规则:
算法导论中给出这样的图,我们结合图来看
1. 当字符串长度相同时,从左向右逐个字符比较,左边的比右边的小。如011 < 100。
2. 字符串长度不同时,长度长的在字典序中值更大。如100 < 1011。
因此,根结点 < 左子树结点 < 右子树结点;所以我们会用到先序遍历;
我们在基数树中存储位串1011,10,011,100和0;
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef struct RadixNode { 5 struct RadixNode *lchild, *rchild; 6 char *str; 7 } RadixNode; 8 9 void radix_insert(RadixNode *node, char *str) 10 { 11 int i; 12 for (i = 0; str[i] != '