1 00:00:00,000 --> 00:00:00,530 2 00:00:00,530 --> 00:00:03,070 >> ПРЕДСЕДНИК 1: Дајмо ово решење пробати. 3 00:00:03,070 --> 00:00:07,130 Дакле, хајде да погледамо шта су наши Струцт чвор ће изгледати. 4 00:00:07,130 --> 00:00:11,040 Ево, видимо да ћемо имати Боол Реч и чвор звезда Структ 5 00:00:11,040 --> 00:00:12,990 Деца у заграде абецеду. 6 00:00:12,990 --> 00:00:18,720 Дакле, прва ствар коју можда се питате, зашто је писмо тараба дефинише као 27? 7 00:00:18,720 --> 00:00:22,540 Па, сећам се да ћемо морати да руковање апостроф, тако 8 00:00:22,540 --> 00:00:25,610 да ће нешто бити од специјалне случај у овом програму. 9 00:00:25,610 --> 00:00:28,780 >> У реду, сада, запамтите како Трие заправо ради. 10 00:00:28,780 --> 00:00:33,420 Рецимо да смо индексацију реч мачке, тада из корена нашег трие, 11 00:00:33,420 --> 00:00:36,670 ћемо да погледате деце низ, а ми ћемо да погледамо 12 00:00:36,670 --> 00:00:42,250 индекс који одговара слову Ц. Дакле, то би било два индекса. 13 00:00:42,250 --> 00:00:46,400 Дакле с обзиром да, да ће нам дати нови чвор, а онда ћемо 14 00:00:46,400 --> 00:00:47,880 раде из тог чвора. 15 00:00:47,880 --> 00:00:51,830 >> Дакле, с обзиром да чвор, ми смо поново ће погледати на децу низ, 16 00:00:51,830 --> 00:00:56,170 и ми ћемо да погледамо индекс нула да одговара А у мачку. 17 00:00:56,170 --> 00:01:01,240 Дакле, онда ћемо да идемо у том чвору, и обзиром да чвор, идемо 18 00:01:01,240 --> 00:01:05,170 да погледате индексу који одговара за Т. и преласка на том чвору, 19 00:01:05,170 --> 00:01:09,590 коначно, ми смо потпуно гледали кроз наше речи мачка, а сада Боол 20 00:01:09,590 --> 00:01:15,020 Реч је требало да укаже да ли ово даје реч је заправо реч. 21 00:01:15,020 --> 00:01:17,530 >> Па зашто нам је потребан тај специјални случај? 22 00:01:17,530 --> 00:01:21,680 Па, шта ако је реч катастрофа је у нашем речнику, али 23 00:01:21,680 --> 00:01:24,120 реч мачка није? 24 00:01:24,120 --> 00:01:29,030 Дакле, у потрази да види да ли је мачка реч у нашем речнику, идемо на 25 00:01:29,030 --> 00:01:34,880 успешно погледати кроз индекса Ц--Т и постигну чвор, али то је 26 00:01:34,880 --> 00:01:39,760 само зато што се десило катастрофа створити чворови на путу од Ц-А-Т све 27 00:01:39,760 --> 00:01:41,250 пут до краја речи. 28 00:01:41,250 --> 00:01:46,520 Дакле Боол Реч се користи показују да ли ова локација заправо 29 00:01:46,520 --> 00:01:48,370 указује на реч. 30 00:01:48,370 --> 00:01:52,920 >> У реду, тако да сада када знамо шта Трие ће изгледати, хајде да погледамо 31 00:01:52,920 --> 00:01:54,800 у функцији оптерећења. 32 00:01:54,800 --> 00:01:58,670 Тако оптерећења ће вратити Боол за ли смо успешно или 33 00:01:58,670 --> 00:02:03,020 безуспешно лоадед речник и ово ће бити речник 34 00:02:03,020 --> 00:02:04,520 да желимо да се учита. 35 00:02:04,520 --> 00:02:08,310 Дакле, прва ствар коју ћемо урадити је отворен до тог речника за читање. 36 00:02:08,310 --> 00:02:12,060 Морамо да будемо сигурни да није пропустио, па ако није речник 37 00:02:12,060 --> 00:02:15,280 успешно отворен, она ће се вратити Не, у том случају ћемо 38 00:02:15,280 --> 00:02:16,340 врати Нетачно. 39 00:02:16,340 --> 00:02:21,290 Али под претпоставком да је успешно отворен, онда можемо да чита 40 00:02:21,290 --> 00:02:22,310 кроз речнику. 41 00:02:22,310 --> 00:02:24,940 >> Дакле, прва ствар коју ћемо Желим да урадите је да имамо ово 42 00:02:24,940 --> 00:02:26,560 глобална променљива корен. 43 00:02:26,560 --> 00:02:30,250 Сада, корен ће бити звезда чвор. 44 00:02:30,250 --> 00:02:33,830 То је врх наше трие да смо Биће итератинг преко. 45 00:02:33,830 --> 00:02:38,200 Дакле, прва ствар коју ћемо желети да урадите је издвојити меморију за наш корен. 46 00:02:38,200 --> 00:02:42,040 >> Приметимо да смо помоћу цаллоц функција, која је у основи иста 47 00:02:42,040 --> 00:02:45,560 као функције маллоц, осим да је то гарантовано нешто што је да се врати 48 00:02:45,560 --> 00:02:47,240 потпуно нулу напоље. 49 00:02:47,240 --> 00:02:51,350 Дакле, ако смо користили маллоц, ми би требало да проћи кроз све тројке у нашој 50 00:02:51,350 --> 00:02:54,220 чвор и проверите да ли сви су нула. 51 00:02:54,220 --> 00:02:56,780 Дакле цаллоц ће то урадити за нас. 52 00:02:56,780 --> 00:03:00,390 >> Сада, баш као маллоц, морамо да сигурни да расподела је заправо 53 00:03:00,390 --> 00:03:01,580 успешна. 54 00:03:01,580 --> 00:03:04,060 Ако се то вратио нулл, онда смо Потребно је затворити наш речник 55 00:03:04,060 --> 00:03:06,170 филе и врате Нетачно. 56 00:03:06,170 --> 00:03:11,040 Дакле, под претпоставком расподелу је успешан, ми ћемо користити чвор 57 00:03:11,040 --> 00:03:14,340 стар курсор на итерацију кроз нашу трие. 58 00:03:14,340 --> 00:03:17,950 Дакле, наш корен никада неће променити, али ми ћемо користити курсор на 59 00:03:17,950 --> 00:03:20,770 заправо иде од чвора до чвора. 60 00:03:20,770 --> 00:03:25,000 >> У реду, тако да у овом За петљи, ми смо читања кроз датотеку речника, 61 00:03:25,000 --> 00:03:26,965 и ми користимо у фгетц. 62 00:03:26,965 --> 00:03:30,360 Дакле фгетц ће да зграби један карактер из датотеке. 63 00:03:30,360 --> 00:03:33,430 Ми ћемо наставити отимања карактера док се не постигне 64 00:03:33,430 --> 00:03:37,540 крају фајла, тако да постоје два случаја морамо да рукује. 65 00:03:37,540 --> 00:03:41,640 Прво, ако лик није Нова линија, тако да знамо да ли је то било ново 66 00:03:41,640 --> 00:03:44,480 линија, онда ћемо о томе да пређите на нову реч. 67 00:03:44,480 --> 00:03:49,300 Али под претпоставком да није нова линија, затим овде, желимо да схватим 68 00:03:49,300 --> 00:03:52,440 Индекс ћемо индекса у Деца у низу који 69 00:03:52,440 --> 00:03:53,890 смо гледали раније. 70 00:03:53,890 --> 00:03:57,950 >> Дакле, као што сам раније рекао, потребно је да Посебан случај апостроф. 71 00:03:57,950 --> 00:04:01,040 Приметимо да смо користећи троструки оператора овде, па ћемо читати 72 00:04:01,040 --> 00:04:05,500 ово као да лик читамо у било апостроф, онда ћемо 73 00:04:05,500 --> 00:04:11,740 сет индекс једнак алфабета минус 1, који ће бити индекс 26.. 74 00:04:11,740 --> 00:04:15,190 Иначе, ако то није био апостроф, онда ћемо поставити индекс 75 00:04:15,190 --> 00:04:17,820 једнак ц минус а. 76 00:04:17,820 --> 00:04:23,090 Дакле, сетите се вратио из претходних п скупова, ц минус ће нам дати 77 00:04:23,090 --> 00:04:27,470 азбучни положај ц, па ако ц је слово, та воља 78 00:04:27,470 --> 00:04:28,770 дај нам индекс нула. 79 00:04:28,770 --> 00:04:32,180 За слово Б, он ће дати ус индекс 1, и тако даље. 80 00:04:32,180 --> 00:04:37,070 >> Дакле, ово нам даје индекс у Деца низ који желимо. 81 00:04:37,070 --> 00:04:42,540 Сада, ако је овај индекс је тренутно у нулл Деца низ, то значи да 82 00:04:42,540 --> 00:04:47,470 чвор не постоји тренутно у који пут, тако да је потребно да се издвоји 83 00:04:47,470 --> 00:04:49,220 чвор за тај пут. 84 00:04:49,220 --> 00:04:50,610 То је оно што ми овде радимо. 85 00:04:50,610 --> 00:04:54,650 Тако ћемо, опет, користите цаллоц функција, тако да немамо 86 00:04:54,650 --> 00:05:00,130 на нулу од свих показивача, и ми смо, опет, потребно је да проверите да цаллоц 87 00:05:00,130 --> 00:05:01,300 није пропустио. 88 00:05:01,300 --> 00:05:04,760 Ако цаллоц пропустио, онда морамо да истовари све, затворите наш 89 00:05:04,760 --> 00:05:06,880 речник, и врати Нетачно. 90 00:05:06,880 --> 00:05:14,110 >> Дакле, под претпоставком да не успеју, онда то ће створити нову дете за нас, 91 00:05:14,110 --> 00:05:16,000 а онда ћемо ићи на то дете. 92 00:05:16,000 --> 00:05:19,030 Наш курсор ће поновити до тог детета. 93 00:05:19,030 --> 00:05:23,390 Сада, ако то није била нула за почетак, онда курсор само може поновити 94 00:05:23,390 --> 00:05:26,650 до тог детета без заправо има да издвоји ништа. 95 00:05:26,650 --> 00:05:30,790 Ово је случај када смо се први пут десило да издвоји реч мачку, и 96 00:05:30,790 --> 00:05:34,390 то значи да кад идемо да издвоји Катастрофа, не треба да се створи 97 00:05:34,390 --> 00:05:35,720 чворова за Ц-А-Т опет. 98 00:05:35,720 --> 00:05:37,620 Они већ постоје. 99 00:05:37,620 --> 00:05:40,140 >> У реду, па шта је ово остало? 100 00:05:40,140 --> 00:05:44,600 То је стање где је ц био косих н, где је ц је нова линија. 101 00:05:44,600 --> 00:05:47,780 То значи да смо успешно завршен реч. 102 00:05:47,780 --> 00:05:51,020 Сада, шта желимо да урадимо када смо успешно завршен реч? 103 00:05:51,020 --> 00:05:55,250 Ми ћемо користити ову област реч унутар нашег струцт чвора. 104 00:05:55,250 --> 00:06:00,570 >> Желимо да подесите да на Труе, тако да указује да је ово указује чвор 105 00:06:00,570 --> 00:06:03,320 успешан реч стварна реч. 106 00:06:03,320 --> 00:06:05,050 Сада, да подесите на Труе. 107 00:06:05,050 --> 00:06:09,210 Желимо да вратите наше курсор на тачку до почетка Трие поново. 108 00:06:09,210 --> 00:06:13,510 И на крају, увећава наш речник величина, јер смо нашли неку другу реч. 109 00:06:13,510 --> 00:06:16,450 >> У реду, тако да ћемо да радимо да, читање карактера по 110 00:06:16,450 --> 00:06:21,960 карактер, изградње нових чворова у наш Трие и за сваку реч у 111 00:06:21,960 --> 00:06:26,810 речник, док коначно не стигнемо ц једнако ЕОФ, у том случају, ми сломити 112 00:06:26,810 --> 00:06:28,100 из датотеке. 113 00:06:28,100 --> 00:06:31,110 Сада, постоје два случаја под које смо можда погодио ЕОФ. 114 00:06:31,110 --> 00:06:35,680 Први је ако је било грешке читање из датотеке, тако да ако је било 115 00:06:35,680 --> 00:06:39,280 грешка, морамо да урадимо типичан истовари све, затворите датотеку, 116 00:06:39,280 --> 00:06:40,520 врати Нетачно. 117 00:06:40,520 --> 00:06:43,870 Под претпоставком да није било грешке, да само значи да заправо погодио крај 118 00:06:43,870 --> 00:06:47,820 фајл, у ком случају, ми смо затворили филе и вратите Истина, јер смо 119 00:06:47,820 --> 00:06:51,010 успешно учитан речник у нашу трие. 120 00:06:51,010 --> 00:06:54,240 >> У реду, хајде сада да цхецк оут Цхецк. 121 00:06:54,240 --> 00:06:58,780 Гледајући на контролном функцијом, видимо Проверите да ће вратити Боол. 122 00:06:58,780 --> 00:07:03,740 То враћа Труе ако ова реч да је то буде усвојен је у нашој трие. 123 00:07:03,740 --> 00:07:06,170 То враћа Фалсе другачије. 124 00:07:06,170 --> 00:07:10,110 >> Па како ћемо да се утврди да ли ова реч је у нашој трие? 125 00:07:10,110 --> 00:07:14,270 Ми овде видимо да, баш као и пре, ћемо користити курсор за итерацију 126 00:07:14,270 --> 00:07:16,010 кроз нашу трие. 127 00:07:16,010 --> 00:07:20,650 Сада, овде, идемо да вршите итерацију преко целе наше речи. 128 00:07:20,650 --> 00:07:24,680 Дакле итератинг преко речи смо прошло, идемо да се утврди 129 00:07:24,680 --> 00:07:29,280 индекс у низу Деца која одговара речи конзоле и. 130 00:07:29,280 --> 00:07:34,150 Дакле, ово ће изгледати баш као Оптерећења, где ако реч носач и је 131 00:07:34,150 --> 00:07:38,110 апостроф, онда желимо да користимо индекс азбука минус 1 зато што одређује 132 00:07:38,110 --> 00:07:41,160 да је место где ћемо за складиштење апострофе. 133 00:07:41,160 --> 00:07:44,440 >> Иначе ћемо користити толовер Реч носач ја. 134 00:07:44,440 --> 00:07:48,270 Дакле, запамтите ту реч може имати произвољан капитализација, и тако смо 135 00:07:48,270 --> 00:07:51,590 желите да се уверите да смо користећи мала верзија ствари. 136 00:07:51,590 --> 00:07:55,300 А онда одузмите од тога малим словима да, још једном, нам дају 137 00:07:55,300 --> 00:07:57,940 абецедном позиција тог карактера. 138 00:07:57,940 --> 00:08:01,740 Дакле, то ће бити наш индекс Деца у низу. 139 00:08:01,740 --> 00:08:06,480 >> А сада, ако је индекс у деце низ нулл, значи да смо 140 00:08:06,480 --> 00:08:09,050 више не може наставити итератинг доле нашег трие. 141 00:08:09,050 --> 00:08:13,320 Ако је то случај, та реч не може можда бити у нашем трие, јер ако то 142 00:08:13,320 --> 00:08:18,000 су, то би значило да ће бити путања до те речи, и ти би 143 00:08:18,000 --> 00:08:19,350 никад срести нулл. 144 00:08:19,350 --> 00:08:21,910 Дакле сусрету нулл, враћамо Нетачно. 145 00:08:21,910 --> 00:08:23,810 Реч није у речнику. 146 00:08:23,810 --> 00:08:28,200 Да није нула, онда ћемо наставити итератинг, па идемо 147 00:08:28,200 --> 00:08:33,150 да ажурирате наш курсор да укаже на то Посебно чвор у том индексу. 148 00:08:33,150 --> 00:08:36,659 >> Дакле, ми би то радили током цео реч. 149 00:08:36,659 --> 00:08:40,630 Под претпоставком да није ударио нулл, то значи ми смо били у могућности да се кроз цео 150 00:08:40,630 --> 00:08:44,840 свет и пронађе чвор у нашем трие, али нисмо још готови. 151 00:08:44,840 --> 00:08:46,350 Ми не желимо да се врате само Истина. 152 00:08:46,350 --> 00:08:51,400 Ми желимо да се врати курсор грешци реч јер, запамти поново, ако мачка није 153 00:08:51,400 --> 00:08:55,140 у наш речник и катастрофа је, онда ћемо успешно добити кроз 154 00:08:55,140 --> 00:08:59,810 реч мачка, али курсор реч ће бити Фалсе и није истина. 155 00:08:59,810 --> 00:09:04,990 Тако смо се вратили курсор реч да укаже да ли је ово чвор је заправо реч, 156 00:09:04,990 --> 00:09:06,530 и да је за проверу. 157 00:09:06,530 --> 00:09:08,310 >> Дакле, хајде да проверимо величина. 158 00:09:08,310 --> 00:09:11,410 Дакле, величина ће бити прилично лако јер, запамти у оптерећењу, ми смо 159 00:09:11,410 --> 00:09:15,480 увецава речник величине за свака реч коју срећемо. 160 00:09:15,480 --> 00:09:20,820 Дакле, величина је само да се врати речник величина, и то је то. 161 00:09:20,820 --> 00:09:24,650 >> У реду, тако да на крају, имамо истовари. 162 00:09:24,650 --> 00:09:29,050 Дакле Унлоад, идемо користити рекурзивни функција да заиста уради све 163 00:09:29,050 --> 00:09:33,390 рада за нас, тако да наши функције ће се звати Унлоадер. 164 00:09:33,390 --> 00:09:35,830 Шта је Унлоадер да уради? 165 00:09:35,830 --> 00:09:40,640 Ми овде видимо да Унлоадер ће поновити над сва деца на 166 00:09:40,640 --> 00:09:45,810 овај чвор, а ако је дете чвор није нулл, онда ћемо 167 00:09:45,810 --> 00:09:47,760 истовари дете чвор. 168 00:09:47,760 --> 00:09:52,070 >> Дакле, ово ће рекурзивно истовари све наше деце. 169 00:09:52,070 --> 00:09:55,140 Када смо сигурни да све наше деце су искрцани, онда смо 170 00:09:55,140 --> 00:09:58,830 да се ослободимо, тако растеретити себе. 171 00:09:58,830 --> 00:10:04,550 Дакле, ово ће рекурзивно истовари цео Трие, а онда једном то је 172 00:10:04,550 --> 00:10:06,910 урађено, можемо само да се врати Истина. 173 00:10:06,910 --> 00:10:09,770 Унлоад не може да не, ми смо само ослобађајући ствари. 174 00:10:09,770 --> 00:10:12,985 Дакле, када смо урадили ослобађање све, вратите Истина. 175 00:10:12,985 --> 00:10:14,380 И то је то. 176 00:10:14,380 --> 00:10:16,792 Моје име је Роб, и то је [ИНАУДИБЛЕ]. 177 00:10:16,792 --> 00:10:21,888