Skip to content

Commit

Permalink
review 11
Browse files Browse the repository at this point in the history
  • Loading branch information
yujiangshui committed May 18, 2020
1 parent 8568511 commit a07fb1c
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions yujiangshui/11/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,23 @@

- 树是特殊的图,它是没有简单回路的连通无向图

![](https://static001.geekbang.org/resource/image/bb/7d/bb472743016ead750fc7a80d8fc6bf7d.jpg)

## 前缀树的构建和查询

### 构建前缀树

切割单词,组成树。新加入的单词切割,找到最后一个相同的位置,分叉创建树。
切割单词,以一个字母作为一个树枝,一直延续下去组成树。

新加入的单词以同样的方式切割字母,顺着相同的树枝找下去,一直找到不同的树枝,分叉。

### 查询前缀树

切割单词顺着一个结点一个结点查找,注意几个特殊情况:
切割单词,通过字母顺着一个结点一个结点查找,注意几个特殊情况:

1. 没到叶子结点单词已经没了,说明不匹配。
2. 到了叶子结点,单词还有,说明不匹配。
3. 搜索过程中被查单词有匹配不上的结点,说明不匹配。
1. 没到叶子结点单词已经没了,说明不匹配,短了
2. 到了叶子结点,单词还有,说明不匹配,长了
3. 搜索过程中被查单词有匹配不上的结点,说明不匹配,没有

相当于不断重复迭代的查找过程,叫做深度优先搜索。

Expand All @@ -46,9 +50,11 @@

满二叉树是一棵高度为 n(高度从 1 开始计),且有 2^n-1 个结点的二叉树。在高度为 k(0<k≤n)的这一层上,结点的数量为 2^(k-1)。如果把树的根标为 0,每个结点的左子结点标为 0,每个结点的右子结点标为 1,那么把根到叶子结点的所有 0 或 1 连起来,就正好对应一个二进制数。

![](https://static001.geekbang.org/resource/image/56/89/564ee1181fe4b351a12f8af690311d89.jpg)

### 应用场景

> 来自评论
来自评论

1. 预测文本输入功能:搜索引擎的输入框中输入搜索关键词的预测文本提示、IDE 代码编辑器和浏览器网址中输入时的预测文本提示,借助老师讲的前两节动态规划实现预测文本的纠错功能;
2. 使用前缀树结构对字符串或单词按字母顺序实现排序并进行输出的功能;
Expand Down

0 comments on commit a07fb1c

Please sign in to comment.