Java 前缀树Trie(字典树、单词查找树)

前缀树也称字典树、单词查找树。

字典树是一种多叉树。

之前我学习的映射,本身也可以称为字典,只不过和我们现在要说的字典树Trie不同。下面对映射字典和字典树Trie做性能比较:

         

 

Trie的结构如图所示:

Trie的定义:

例如:每个节点有26个指向下个节点的指针。

不过这里的26并不是一定的,如果字母有大小写,就要改成52,如果有加入其他特殊字符,又是不同的。

应该考虑不同的语言,不同的情境。所以每个节点有若干指向下个节点的指针。此时即需要动态的实现。

此时运用上了映射数据结构。

简单描述Trie的查找过程:和之前学的二叉树不一样,Trie的查找,知道key要来查找value,在知道key,也可以说是要查找的位置或者路径的同时,就可以说是已经查找到了该value了。

所以此时把char c去掉完全没有问题。

例如要查找单词pan,在知道p位置之后,接着要查找a,再查找n,此时的n并不是叶子节点。而pan又是panda的前缀,所以说访问一个单词并不是一定要访问到叶子节点为止,所以需要定义一个变量来表示该字母是否代表一个单词的结尾。

isWord表示是否已经访问到了一个单词。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值