概念
在 R 向单词查找树中,每生成一个新结点,就会为该结点生成 R 个子节点,然后很多结点都是空的,因此,为了避免 R 向单词查找树的过度空间消耗,可以使用另一种数据结构的表示方法——三向单词查找树。
三向单词查找树中:
- 每个结点包含一个字符,一个值,三个子节点;
- 三个子节点分别对应着当前结点中,结点字母小于,等于,或大于当前结点的所有键;
- 字符显式地保存在结点中。
图解
下图上,上面为 R 向单词查找树的示例,下面为三向单词查找树的示例
代码实现
查找与插入
在三向单词查找树的查找操作中,我们先对比根节点,如果键的首字母较小,则在左侧子树中查找;如果键首字母较大,则在右子树中查找。递归进行该算法,知道遇到空节点或键结束。
进行插入操作时,在查找的基础之上,每当遇到一个空链接,则新建一个结点并保存字符。
1 | public class TST<V> { |
参考文档
《算法》