>> 扬声器1：让我们给 该解决方案一试。
因此，让我们来看看我们什么 结构节点的样子。
在这里，我们看到了我们将有一个 布尔字和一个结构节点明星
儿童括起来的字母。
所以，第一件事情你可能想知道， 为什么字母散列定义为27？
好了，记住，我们将需要 待处理的单引号，所以
这将是一个有点特殊 情况下整个程序。
>> 好了，现在请大家记住一个 特里的实际工作。
比方说，我们正在索引字猫， 然后从我们的Trie树的根，
我们要看看孩子 数组，我们要看看
对应于字母索引 C.因此，这将是指数2。
因此考虑到，这将给予我们 一个新的节点，然后我们将
从该节点工作。
>> 所以，有了这个节点，我们再次 去看看孩子阵列，
而且我们要看看指数为零 对应于猫在A。
这样的话，我们会去到该节点， 并给予该节点，我们要
看对应的索引处 到T和移动到该节点，
最后，我们已经完全看 通过我们的字猫，现在布尔
单词应该表明是否 这个给定的字实际上是一个字。
>> 那么，为什么我们需要这种特殊情况？
那么，如果这个词灾难 在我们的字典，但
字猫是不是？
所以想看看，如果这个词是猫 在我们的字典，我们要
成功地翻阅索引 C-A-T和到达一个节点，但是这
只是因为灾难发生在 从C-A-T的方式创建所有的节点
一直到单词的末尾。
所以布尔字是用来说明是否 这个特殊的位置，实际上
表示一个字。
>> 好了，所以现在我们知道什么是 特里是怎么回事的样子，让我们来看看
在负载功能。
因此，负载将会返回一个布尔 对于我们是否成功
加载失败字典和 这将是字典
我们要加载。
我们将这样做第一件事就是打开 了那本词典阅读。
我们必须确保我们没有失败， 因此，如果在字典不
成功打开，它将返回 不，在这种情况下，我们要
返回False。
但假设它成功 开了，那么我们就可以真正阅读
通过字典。
>> 我们将这样的第一件事 想要做的是我们有这个
全局变量的根。
现在，根将是一个节点明星。
这是我们的Trie树的顶部，我们是 将要逐一查看。
我们会想这样的第一件事 做的是为我们的根分配内存。
>> 请注意，我们使用了释放calloc 功能，这是基本相同
作为malloc函数，除了它的 保证返回的东西是
完全归零。
因此，如果我们使用的malloc，我们需要 通过所有的指针我们
节点，并确保 它们都是空。
所以释放calloc会替我们。
>> 现在，就像malloc的，我们需要做 确保分配实际上
成功的。
如果返回null，那么我们 需要关闭我们的字典
文件并返回False。
因此，假如被分配 成功，我们将使用一个节点
明星游标来遍历 通过我们的特里。
因此，我们的根永远不会改变， 但我们要使用游标来
实际上去从一个节点到另一个节点。
>> 好吧，所以在这个For循环中，我们 通过字典文件读取，
我们正在使用的龟etc。
所以龟etc是要抢单 字符从该文件。
我们要继续抓 虽然我们不到达的字符
该文件的结束，所以有 2箱子我们需要处理。
第一，如果该字符不是 新的生产线，所以我们知道，如果它是一个新的
行，那么我们将要 移动到一个新词。
但假设它不是一个新行，然后 在这里，我们想弄清楚的
指数我们要索引 儿童数组中
我们看着面前。
>> 所以，就像我之前说的，我们需要 特殊情况下的单引号。
我们使用三元运算符通知 在这里，所以我们要读
这好像我们在阅读的字符是 一个单引号，那么我们要
设置索引等于减去字母 1，这将是该指数26。
否则，如果它不是一个单引号， 然后我们要设置索引
等于c减去一个。
所以请记住从以前的p设置回来， Ç减去一个是要给我们
C的按字母顺序排列的位置，所以如果 c是字母A，这将
给我们指数为零。
对于字母B，它会给 我们的索引1，依此类推。
>> 因此，这给了我们中的索引 儿童阵列，我们想要的。
现在，如果该指数是目前在空 儿童阵列，这意味着
节点当前不存在从 这条道路，所以我们需要分配一个
节点的路径。
这就是我们在这里做的。
所以，我们要再次，使用释放calloc 功能，使我们不必
零出所有的指针，而我们， 再次，需要检查释放calloc
没有失败。
如果释放calloc会失败，那么我们就需要 卸载一切，我们关闭
字典，并返回False。
>> 因此，假如它没有出现故障，则 这为我们创建一个新的子，
然后我们会去那个孩子。
我们的光标会遍历 下到那个孩子。
现在，如果这不是空，首先， 然后将光标可以只遍历
下到那个孩子没有实际 不必分配任何东西。
这是我们第一次发生的情况 分配的字猫，和
这意味着当我们去分配 灾难中，我们并不需要创建
再次为C-A-T的节点。
它们已经存在。
>> 好了，这是什么东西？
这是其中c是条件 反斜杠N，其中c是一个新行。
这意味着我们已经成功 完成了一个字。
现在，我们想要做的，当我们 成功地完成了一个字？
我们将用这个词场 我们的内部结构体的节点。
>> 我们要设置为True，这样， 表明该节点表示一个
成功的话实际字。
现在，设置为True。
我们要重设我们的光标点 在特里的开始了。
最后，增加我们的字典 大小，因为我们发现了另一个字。
>> 好吧，所以我们要继续做 即，通过读取字符
字符，兴建新节点 我们的Trie树和在每个字
字典，直到我们终于到达C 等于EOF，在这种情况下，我们分手吧
出来的文件。
现在，有下2案件 我们可能EOF打击。
如果有错误，首先是 从文件中读取的，所以如果有
的错误，我们需要做的典型 卸载一切，关闭文件，
返回False。
假设没有了一个错误，该 只是意味着我们实际上打的结尾
的文件，在这种情况下，我们关闭 文件，并返回True，因为我们
成功载入字典 进入我们的特里。
>> 好吧，那么现在让我们来 退房入住。
纵观检查功能，我们看到 该检查将要返回一个布尔值。
如果这个词，它是它返回True 传递是在我们的特里。
它，否则返回False。
>> 那么我们如何来判断是否 这个词在我们的特里？
我们在这里看到的是，就像以前一样， 我们将使用游标来遍历
通过我们的特里。
现在，在这里，我们要遍历 在我们的整个字。
所以遍历我们的字 过去了，我们要确定
索引的儿童阵列 对应词支架I。
因此，这是要完全一样 负载，其中，如果字架我是一个
单引号，那么我们要使用索引 字母减去1，因为我们确定
那就是我们要去的地方 存储单引号。
>> 否则我们将要使用的tolower 字架我。
所以请记住这个词可以有任意的 资本化，所以我们
要确保我们使用 一个小写版本的东西。
然后从该小写减 一来，再次给我们
按字母顺序排列的位置 该角色。
所以这将是我们的索引 到儿童阵列。
>> 而现在，如果该索引到儿童 数组为null，这意味着我们
不能再继续迭代 下来我们的特里。
如果是这样的话，这个词不能 可能是在我们的特里，因为如果它
是，这将意味着会有一个 小路下到那个字，你会
从来没有遇到空。
所以遇到空，我们返回False。
的字不在字典中。
如果它不为null，那么我们要 继续迭代，所以我们要
更新我们的光标指向 该指数在特定节点。
>> 因此，我们继续在整个这样做 整个字。
假设我们从来不打空，那手段 我们能够打通整个
世界，发现在我们的特里一个节点， 但我们还没有完全完成。
我们不希望只是返回True。
我们要返回游标错误字 因为，记得再次，如果猫是不是
在我们的字典和灾难是， 那么我们将成功打通
字猫，但光标字 将虚假和不正确的。
所以我们返回游标字来表示 是否该节点实际上是一个字，
，就是这样的检查。
>> 因此，让我们看看大小。
所以，大小将是很容易 因为，记得在负载，我们
递增的字典大小 我们遇到的每一个字。
因此，尺寸只是要返回 字典大小，仅此而已。
>> 好吧，那么最后，我们有卸载。
所以卸载，我们将使用 递归函数实际上做
对于我们，所以我们的函数的工作 将被称为卸料。
什么是卸荷怎么办？
我们在这里看到了卸荷是要 遍历所有的儿童在
这个特定的节点，并且如果子 节点不为空，那么我们要
卸的子节点。
>> 所以，这是怎么回事递归 卸载所有我们的孩子。
一旦我们确定我们的孩子 已经卸载，那么我们
可以释放自己，所以卸载我们自己。
因此，这将递归卸载 整个特里，然后一旦这
完成后，我们可以只返回True。
卸载不能失败，我们 刚解放的东西。
所以一旦我们完成了解放 一切，返回True。
就是这样。
我的名字是罗布，这 是[听不清]。