10. 什么是Trie字典树

10.1 什么是Trie字典树

Tip:本博客内容是通过学习慕课网bobo老师视频做的笔记总结,不用于任何商业用途,只用于帮助更多技术爱好者。

(1) 背景

发生在微软的一个真实案例:

在一个古老的手持设备中实现一个通讯录功能,但是当时的手持设备的芯片运算能力是非常低的,所以他们发现当通讯录中记录的条目非常多的时候,搜索通讯录中的内容是非常慢的。但是这个问题是被微软的一个实习生解决了。其实他解决的方式非常简单,他就是使用了这种Trie数据结构来解决的。

 

 

(2) 什么是Trie树

[1] Trie是一个多叉树

[2] 字典和Trie树对比:

[3] Trie多叉树结构示意图:

[4] Trie树数据结构的初级版本

英文中只有26个字母,所以每个节点有26个指向下一个节点的指针。

但是深入思考会发现,每个节点的指针数固定死了26个指针,那么它的指针数就不是动态的,那么使用场景就会被限制的很死,所以这个初级版本的数据结构可以进化。

[5] Trie树数据结构的中级版本

第一:每个节点有若干个指向下一个节点的指针;

第二:考虑不同场景,不同的使用场景,里面使用了一个映射的数据结构代替Node结构作为指针定义,所以Map可以包含任意char字符。

[6] Trie树数据结构的中级进化版本

去掉char c定义,因为每个节点去到下一个指针节点的时候,就已经知道了节点的值了

[7] Trie树数据结构的最终版本

第一:变成蓝色的节点表示是单词的结尾;

第二:Node数据结构增加了一个isWord字段来标识此节点是否是单词的结尾。

For example: cat表示一个单词 | dog表示一个单词 | deer表示一个单词 | pan表示一个单词 | panda表示一个单词

 

如果感兴趣的童鞋,可以观看我下一篇博客:10.2 Trie字典树基础(Trie代码Demo)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值