>> 揚聲器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。
就是這樣。
我的名字是羅布，這 是[聽不清]。