1 00:00:00,000 --> 00:00:02,500 [Powered by Google Translate] [Adran 7] [Llai cyfforddus] 2 00:00:02,500 --> 00:00:04,890 [Nate Hardison] [Harvard University] 3 00:00:04,890 --> 00:00:07,000 [Mae hyn yn CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,080 >> Croeso i Adran 7. 5 00:00:09,080 --> 00:00:11,330 Diolch i Sandy corwynt, 6 00:00:11,330 --> 00:00:13,440 yn hytrach na chael adran arferol yr wythnos hon, 7 00:00:13,440 --> 00:00:17,650 ydym yn ei wneud y daith hon-drwy, drwy'r adran o'r cwestiynau. 8 00:00:17,650 --> 00:00:22,830 Rydw i'n mynd i gael eu dilyn ynghyd â'r Problem Set 6 Manyleb, 9 00:00:22,830 --> 00:00:25,650 ac yn mynd drwy bob un o'r cwestiynau yn y 10 00:00:25,650 --> 00:00:27,770 Mae Adran o Gwestiynau adran. 11 00:00:27,770 --> 00:00:30,940 Os oes unrhyw gwestiynau, 12 00:00:30,940 --> 00:00:32,960 os gwelwch yn dda yn rhoi'r rhain ar CS50 Trafod. 13 00:00:32,960 --> 00:00:35,480 >> Iawn. Gadewch i ni ddechrau arni. 14 00:00:35,480 --> 00:00:40,780 Ar hyn o bryd rwyf i'n edrych ar dudalen 3 y Set Problem Fanyleb. 15 00:00:40,780 --> 00:00:44,110 Rydym yn mynd yn gyntaf i ddechrau siarad am goed deuaidd 16 00:00:44,110 --> 00:00:47,850 ers y cael llawer o berthnasol i set problem yr wythnos hon - 17 00:00:47,850 --> 00:00:49,950 amgodiad Coed Huffman. 18 00:00:49,950 --> 00:00:55,000 Un o'r strwythurau data cyntaf buom yn siarad am ar CS50 oedd y rhesi. 19 00:00:55,000 --> 00:01:00,170 Cofiwch fod amrywiaeth yn ddilyniant o elfennau - 20 00:01:00,170 --> 00:01:04,019 i gyd o'r un fath - storio dde nesaf at ei gilydd yn y cof. 21 00:01:04,019 --> 00:01:14,420 Os oes gen i amrywiaeth cyfanrif y gallaf dynnu llun gan ddefnyddio arddull hon blychau-rifau-cyfanrifau - 22 00:01:14,420 --> 00:01:20,290 Lets 'ddeud gennyf 5 yn y blwch cyntaf, mae gennyf 7 yn yr ail, 23 00:01:20,290 --> 00:01:27,760 hynny, rwyf wedi 8, 10, a 20 yn y blwch olaf. 24 00:01:27,760 --> 00:01:33,000 Pethau Cofiwch, y ddau yn dda iawn am y casgliad 25 00:01:33,000 --> 00:01:38,800 yw bod gennym y mynediad hwn yn gyson-amser i unrhyw elfen benodol 26 00:01:38,800 --> 00:01:40,500  yn yr amrywiaeth os ydym yn gwybod ei mynegai. 27 00:01:40,500 --> 00:01:44,670 Er enghraifft, os wyf am i chrafangia 'r drydedd elfen yn yr amrywiaeth - 28 00:01:44,670 --> 00:01:47,870 ar fynegai 2 gan ddefnyddio ein system mynegeio ar sail sero - 29 00:01:47,870 --> 00:01:52,220 Yr wyf yn llythrennol yn rhaid i wneud cyfrifiad mathemategol syml, 30 00:01:52,220 --> 00:01:56,170 hop i'r swydd honno yn yr amrywiaeth, 31 00:01:56,170 --> 00:01:57,840 dynnu allan o'r 8 sydd yn cael ei storio yno, 32 00:01:57,840 --> 00:01:59,260 ac rwy'n da i fynd. 33 00:01:59,260 --> 00:02:03,350 >> Un o'r pethau drwg am y casgliad - y buom yn siarad am 34 00:02:03,350 --> 00:02:05,010 pan fyddwn yn trafod rhestrau cysylltiedig - 35 00:02:05,010 --> 00:02:09,120 yw, os wyf i am osod elfen i hyn array, 36 00:02:09,120 --> 00:02:11,090 Rydw i'n mynd i gael i wneud rhywfaint o symud o gwmpas. 37 00:02:11,090 --> 00:02:12,940 Er enghraifft, mae hyn yn amrywiaeth dde yma 38 00:02:12,940 --> 00:02:16,850 yw er mwyn datrys - didoli yn nhrefn esgynnol - 39 00:02:16,850 --> 00:02:19,440 5, yna 7, yna 8, yna 10, ac yna 20 - 40 00:02:19,440 --> 00:02:23,100 ond os wyf i am osod y rhif 9 i mewn i hyn array, 41 00:02:23,100 --> 00:02:27,460 Rydw i'n mynd i gael i symud rhai o'r elfennau er mwyn gwneud lle. 42 00:02:27,460 --> 00:02:30,440 Gallwn dynnu hyn allan yma. 43 00:02:30,440 --> 00:02:35,650 Rydw i'n mynd i gael i symud y 5, 7, ac yna yr 8; 44 00:02:35,650 --> 00:02:38,720 creu bwlch lle y gallaf roi'r 9, 45 00:02:38,720 --> 00:02:45,910 ac yna y gall 10 a'r 20 yn mynd i'r dde o'r 9. 46 00:02:45,910 --> 00:02:49,450 Mae hwn yn fath o boen oherwydd yn y senario gwaethaf-achos - 47 00:02:49,450 --> 00:02:54,350 pan fyddwn ni'n cael i fewnosod naill ai ar ddechrau neu ar ddiwedd 48 00:02:54,350 --> 00:02:56,040 y rhesi, yn dibynnu ar sut rydym yn symud - 49 00:02:56,040 --> 00:02:58,850 efallai y byddwn yn y pen draw yn gorfod symud yr holl elfennau 50 00:02:58,850 --> 00:03:00,750 ein bod ar hyn o bryd storio yn y rhesi. 51 00:03:00,750 --> 00:03:03,810 >> Felly, beth oedd y ffordd o gwmpas hyn? 52 00:03:03,810 --> 00:03:09,260 Mae'r ffordd o amgylch hyn oedd i fynd i'n dull rhestr cysylltiedig-os - 53 00:03:09,260 --> 00:03:19,820 yn hytrach na storio elfennau 5, 7, 8, 10, ac 20 i gyd nesaf at ei gilydd er cof - 54 00:03:19,820 --> 00:03:25,630 hyn yr ydym yn hytrach yn cael ei storio yn eu math o lle bynnag rydym yn awyddus i storio 55 00:03:25,630 --> 00:03:32,470 yn y rhestr nodau cysylltiedig-yr wyf i'n tynnu allan yma, math o ad hoc. 56 00:03:32,470 --> 00:03:42,060 Ac yna rydym yn eu cysylltu gyda'i gilydd gan ddefnyddio awgrymiadau hyn nesaf. 57 00:03:42,060 --> 00:03:44,370 Gallaf gael pwyntydd o 5 i 7, 58 00:03:44,370 --> 00:03:46,420 pwyntydd gan y 7 i 8, 59 00:03:46,420 --> 00:03:47,770 pwyntydd o'r 8 i 10, 60 00:03:47,770 --> 00:03:51,220 ac yn olaf, pwyntydd o'r 10 i'r 20, 61 00:03:51,220 --> 00:03:54,880 ac yna pwyntydd nwl yn y 20 sy'n dangos nad oes dim byd chwith. 62 00:03:54,880 --> 00:03:59,690 Mae'r fasnach-off sydd gennym yma 63 00:03:59,690 --> 00:04:05,360 yw bod nawr os ydym am i fewnosod y rhif 9 yn ein rhestr didoli, 64 00:04:05,360 --> 00:04:08,270 i gyd mae'n rhaid i ni ei wneud yw creu nod newydd gyda 9, 65 00:04:08,270 --> 00:04:12,290 gwifren i fyny i bwyntio at y man priodol, 66 00:04:12,290 --> 00:04:20,630 ac yna ail-wifren yr 8 i bwyntio i lawr i'r 9. 67 00:04:20,630 --> 00:04:25,660 Dyna 'n bert gyflym, gan dybio ein bod yn gwybod yn union lle rydym am i mewnosoder y 9. 68 00:04:25,660 --> 00:04:32,610 Ond y fasnach-off yn gyfnewid am hyn yw ein bod wedi colli awr fynediad cyson-amser 69 00:04:32,610 --> 00:04:36,230 i unrhyw elfen benodol yn ein strwythur data. 70 00:04:36,230 --> 00:04:40,950 Er enghraifft, os ydw i am ddod o hyd i'r bedwaredd elfen yn y rhestr hon cysylltiedig, 71 00:04:40,950 --> 00:04:43,510 Rydw i'n mynd i gael i ddechrau ar y cychwyn cyntaf y rhestr 72 00:04:43,510 --> 00:04:48,930 a gweithio fy ffordd trwy gyfrif nod-by-nod hyd nes i mi dod o hyd i'r un pedwerydd. 73 00:04:48,930 --> 00:04:55,870 >> Er mwyn cael perfformiad gwell mynediad na rhestr cysylltiedig - 74 00:04:55,870 --> 00:04:59,360 ond hefyd yn cadw rhai o'r buddiannau a fu gennym 75 00:04:59,360 --> 00:05:01,800 o ran gosod-amser o restr cysylltiedig - 76 00:05:01,800 --> 00:05:05,750 coeden ddeuaidd yn mynd i angen i ddefnyddio cof ychydig yn fwy. 77 00:05:05,750 --> 00:05:11,460 Yn benodol, yn hytrach na dim ond cael un pwyntydd mewn nod goeden ddeuol - 78 00:05:11,460 --> 00:05:13,350 fel y rhestr cysylltiedig-nod yn - 79 00:05:13,350 --> 00:05:16,950 rydym yn mynd i ychwanegu bwyntydd ail y nod goeden ddeuaidd. 80 00:05:16,950 --> 00:05:19,950 Yn hytrach na dim ond cael un pwyntydd i'r elfen nesaf, 81 00:05:19,950 --> 00:05:24,420 rydym yn mynd i gael pwyntydd i blentyn chwith a dde phlentyn. 82 00:05:24,420 --> 00:05:26,560 >> Gadewch i ni dynnu llun i weld beth sydd mewn gwirionedd yn edrych fel. 83 00:05:26,560 --> 00:05:31,350 Unwaith eto, dw i'n mynd i ddefnyddio blychau hyn a saethau. 84 00:05:31,350 --> 00:05:37,150 Bydd nod goeden ddeuol dechrau gyda dim ond blwch syml. 85 00:05:37,150 --> 00:05:40,940 Mae'n mynd i gael lle ar gyfer y gwerth, 86 00:05:40,940 --> 00:05:47,280 ac yna mae hefyd yn mynd i gael lle ar gyfer y plentyn chwith ac i'r plentyn iawn. 87 00:05:47,280 --> 00:05:49,280 Rydw i'n mynd i labelu nhw yma. 88 00:05:49,280 --> 00:05:57,560 Rydym yn mynd i gael y plentyn chwith, ac yna rydym yn mynd i gael i'r plentyn iawn. 89 00:05:57,560 --> 00:05:59,920 Mae llawer o ffyrdd gwahanol o wneud hyn. 90 00:05:59,920 --> 00:06:02,050 Weithiau, am le a hwylustod, 91 00:06:02,050 --> 00:06:06,460 'N annhymerus' mewn gwirionedd yn tynnu ei fel fy mod yn ei wneud yma ar y gwaelod 92 00:06:06,460 --> 00:06:10,910 lle dwi'n mynd i gael y gwerth ar y brig, 93 00:06:10,910 --> 00:06:14,060 ac yna i'r plentyn iawn ar y gwaelod ar y dde, 94 00:06:14,060 --> 00:06:16,060 a'r plentyn chwith ar y gwaelod ar y chwith. 95 00:06:16,060 --> 00:06:20,250 Mynd yn ôl at y diagram uchaf, 96 00:06:20,250 --> 00:06:22,560 mae gennym y gwerth ar y brig, 97 00:06:22,560 --> 00:06:25,560 Yna, mae gennym y pwyntydd chwith plentyn, ac yna mae gennym y pwyntydd dde plentyn. 98 00:06:25,560 --> 00:06:30,110 >> Yn y Set Problem Fanyleb, 99 00:06:30,110 --> 00:06:33,110 fyddwn yn sôn am dynnu nod sydd â gwerth 7, 100 00:06:33,110 --> 00:06:39,750 ac yna i'r chwith-pwyntydd plant sy'n null, ac mae pwyntydd dde-plentyn sy'n null. 101 00:06:39,750 --> 00:06:46,040 Gallwn naill ai ysgrifennu NULL cyfalaf yn y gofod ar gyfer 102 00:06:46,040 --> 00:06:51,610 Gall y plentyn chwith ac i'r plentyn iawn, neu rydym yn tynnu y slaes lletraws 103 00:06:51,610 --> 00:06:53,750 drwy bob un o'r blychau i ddangos ei fod yn null. 104 00:06:53,750 --> 00:06:57,560 Rydw i'n mynd i wneud hynny dim ond oherwydd dyna symlach. 105 00:06:57,560 --> 00:07:03,700 Beth welwch chi yma yn ddwy ffordd o diagramau yn nod deuaidd syml iawn goeden 106 00:07:03,700 --> 00:07:07,960 lle mae gennym y gwerth 7 ac awgrymiadau blant null. 107 00:07:07,960 --> 00:07:15,220 >> Mae ail ran ein sgyrsiau fanyleb am sut gyda rhestrau cysylltiedig - 108 00:07:15,220 --> 00:07:18,270 cofiwch, dim ond wedi i ddal gafael ar yr elfen gyntaf mewn rhestr 109 00:07:18,270 --> 00:07:20,270 i gofio am y rhestr gyfan - 110 00:07:20,270 --> 00:07:26,140 ac yn yr un modd, gyda choeden ddeuol, dim ond rhaid i ni ddal gafael ar i un pwyntydd i'r goeden 111 00:07:26,140 --> 00:07:31,120 er mwyn cadw rheolaeth dros y strwythur data cyfan. 112 00:07:31,120 --> 00:07:36,150 Mae'r elfen arbennig o'r goeden a elwir yn nod wraidd y goeden. 113 00:07:36,150 --> 00:07:43,360 Er enghraifft, os yw hyn yn nod un - nod sy'n cynnwys y gwerth 7 114 00:07:43,360 --> 00:07:45,500 gyda awgrymiadau chwith a dde-phlentyn null - 115 00:07:45,500 --> 00:07:47,360 oedd y gwerth yn unig yn ein coed, 116 00:07:47,360 --> 00:07:50,390 yna byddai hyn yn ein nod gwraidd. 117 00:07:50,390 --> 00:07:52,240 Mae'n cychwyn cyntaf ein coeden. 118 00:07:52,240 --> 00:07:58,530 Gallwn weld hyn ychydig yn fwy clir ar ôl i ni ddechrau ychwanegu nodau mwy i ein coeden. 119 00:07:58,530 --> 00:08:01,510 Gadewch i mi dynnu i fyny tudalen newydd. 120 00:08:01,510 --> 00:08:05,000 >> Nawr rydym yn mynd i dynnu coeden sy'n tyfu 7 yn y gwraidd, 121 00:08:05,000 --> 00:08:10,920 a 3 y tu mewn y plentyn chwith, a 9 tu mewn i'r plentyn iawn. 122 00:08:10,920 --> 00:08:13,500 Unwaith eto, mae hyn yn eithaf syml. 123 00:08:13,500 --> 00:08:26,510 Mae gennym 7, lluniwch nod ar gyfer y 3, yn nod ar gyfer 9, 124 00:08:26,510 --> 00:08:32,150 ac rydw i'n mynd i osod y pwyntydd chwith-phlentyn o 7 i bwyntio at y nod yn cynnwys 3, 125 00:08:32,150 --> 00:08:37,850 ac mae'r pwyntydd dde-blentyn y nod yn cynnwys 7 i nod sy'n cynnwys 9. 126 00:08:37,850 --> 00:08:42,419 Nawr, nid ers 3 a 9 yn cael unrhyw blant, 127 00:08:42,419 --> 00:08:48,500 rydym yn mynd i osod eu holl awgrymiadau plentyn i fod yn null. 128 00:08:48,500 --> 00:08:56,060 Yma, wrth wraidd ein coeden yn cyfateb i nod sy'n cynnwys y rhif 7. 129 00:08:56,060 --> 00:09:02,440 Gallwch weld bod os bydd yr holl gennym yw pwyntydd i'r nod gwraidd, 130 00:09:02,440 --> 00:09:07,330 yna gallwn gerdded trwy ein coeden a chael gafael ar nodau blant ddau - 131 00:09:07,330 --> 00:09:10,630 yn 3 a 9. 132 00:09:10,630 --> 00:09:14,820 Nid oes angen i gynnal awgrymiadau i bob nod sengl ar y goeden. 133 00:09:14,820 --> 00:09:22,080 Iawn. Nawr rydym yn mynd i ychwanegu un arall at y nod diagram. 134 00:09:22,080 --> 00:09:25,370 Rydym yn mynd i ychwanegu nod sy'n cynnwys 6, 135 00:09:25,370 --> 00:09:34,140 ac rydym yn mynd i ychwanegu hyn fel y plentyn hawl y nod yn cynnwys 3. 136 00:09:34,140 --> 00:09:41,850 I wneud hynny, dw i'n mynd i ddileu y pwyntydd nwl yn y 3-nod 137 00:09:41,850 --> 00:09:47,750 a gwifren i fyny i dynnu sylw at y nod sy'n cynnwys 6. Iawn. 138 00:09:47,750 --> 00:09:53,800 >> Ar y pwynt hwn, gadewch i ni fynd dros ychydig o derminoleg. 139 00:09:53,800 --> 00:09:58,230 I ddechrau, y rheswm bod hyn yn cael ei alw'n goeden ddeuol yn arbennig 140 00:09:58,230 --> 00:10:00,460 yw ei fod ganddo ddau awgrymiadau plentyn. 141 00:10:00,460 --> 00:10:06,020 Mae yna fathau eraill o goed sy'n cael awgrymiadau mwy ar y plentyn. 142 00:10:06,020 --> 00:10:10,930 Yn benodol, gwnaethoch 'roi cynnig' mewn 5 Set Problem. 143 00:10:10,930 --> 00:10:19,310 Byddwch yn sylwi bod yn y cais, byddwch yn cael 27 awgrymiadau gwahanol i blant gwahanol - 144 00:10:19,310 --> 00:10:22,410 un ar gyfer pob un o'r 26 o lythyrau yn y wyddor Saesneg, 145 00:10:22,410 --> 00:10:25,410 ac yna y 27ain ar gyfer y collnod - 146 00:10:25,410 --> 00:10:28,900 felly, mae hynny'n debyg i fath o goeden. 147 00:10:28,900 --> 00:10:34,070 Ond yma, gan ei fod yn binary, dim ond dau awgrymiadau plentyn. 148 00:10:34,070 --> 00:10:37,880 >> Yn ogystal â hyn, nod gwraidd ein bod yn sôn amdanynt, 149 00:10:37,880 --> 00:10:41,470 rydym hefyd wedi bod yn taflu o gwmpas y term 'plentyn'. 150 00:10:41,470 --> 00:10:44,470 Beth mae'n ei olygu i un nod i fod yn blentyn arall nod? 151 00:10:44,470 --> 00:10:54,060 Mae'n llythrennol yn golygu bod nod plentyn yn blentyn arall nod 152 00:10:54,060 --> 00:10:58,760 os yw'r nod arall un o'i awgrymiadau plentyn osod i gyfeirio at y nod. 153 00:10:58,760 --> 00:11:01,230 I roi hyn mewn termau diriaethol mwy, 154 00:11:01,230 --> 00:11:11,170 os 3 yn tynnu sylw at un o'r awgrymiadau plentyn 7, yna 3 yn blentyn o 7. 155 00:11:11,170 --> 00:11:14,510 Pe baem yn chyfrif i maes beth y mae'r plant o 7 yw - 156 00:11:14,510 --> 00:11:18,510 yn dda, rydym yn gweld bod 7 Mae pwyntydd i 3 a pwyntydd i 9, 157 00:11:18,510 --> 00:11:22,190 hynny 9 a 3 yn blant o 7. 158 00:11:22,190 --> 00:11:26,650 Nid oes gan naw plant oherwydd ei awgrymiadau plant yn null, 159 00:11:26,650 --> 00:11:30,940 a 3 dim ond un plentyn, 6. 160 00:11:30,940 --> 00:11:37,430 Six oes ganddo blant oherwydd ddau o'i arwyddion yn null, y byddwn yn tynnu ar hyn o bryd. 161 00:11:37,430 --> 00:11:45,010 >> Yn ogystal, rydym hefyd yn sôn am y rhieni nod penodol, 162 00:11:45,010 --> 00:11:51,100 ac mae hyn yn, fel y byddech yn ei ddisgwyl, gefn y disgrifiad plentyn. 163 00:11:51,100 --> 00:11:58,620 Mae pob nod Dim ond un rhiant - yn hytrach na dau fel y gallech ddisgwyl gyda phobl. 164 00:11:58,620 --> 00:12:03,390 Er enghraifft, rhiant 3 yw 7. 165 00:12:03,390 --> 00:12:10,800 Y rhiant o 9 hefyd yn 7, a'r rhiant o 6 yw 3. Dim llawer iddo. 166 00:12:10,800 --> 00:12:15,720 Rydym hefyd wedi termau i siarad am neiniau a theidiau a wyrion, 167 00:12:15,720 --> 00:12:18,210 ac yn fwy cyffredinol rydym yn sôn am yr hynafiaid 168 00:12:18,210 --> 00:12:20,960 a disgynyddion yn nod penodol. 169 00:12:20,960 --> 00:12:25,710 Mae'r gyndad nod - neu hynafiaid, yn hytrach, o nod - 170 00:12:25,710 --> 00:12:32,730 hefyd pob un o'r nodau sy'n gorwedd ar y llwybr o'r gwraidd i'r nod. 171 00:12:32,730 --> 00:12:36,640 Er enghraifft, os ydw i'n edrych ar y 6 nod, 172 00:12:36,640 --> 00:12:46,430 yna mae'r hynafiaid yn mynd i fod yn 3 a 7. 173 00:12:46,430 --> 00:12:55,310 Mae hynafiaid o 9, er enghraifft, yw - os ydw i'n edrych ar y 9 nod - 174 00:12:55,310 --> 00:12:59,990 yna bydd y hynafiad o 9 yn unig 7. 175 00:12:59,990 --> 00:13:01,940 Ac mae disgynyddion yn union i'r gwrthwyneb. 176 00:13:01,940 --> 00:13:05,430 Os ydw i eisiau edrych ar yr holl ddisgynyddion 7, 177 00:13:05,430 --> 00:13:11,020 Yna rhaid i mi edrych ar yr holl nodau oddi tano. 178 00:13:11,020 --> 00:13:16,950 Felly, yr wyf wedi 3, 9, a 6 i gyd fel disgynyddion 7. 179 00:13:16,950 --> 00:13:24,170 >> Mae'r tymor olaf y byddwn yn siarad amdano yw y syniad o fod yn frawd neu chwaer. 180 00:13:24,170 --> 00:13:27,980 Brodyr a chwiorydd - math o yn dilyn ar hyd ar y telerau teulu - 181 00:13:27,980 --> 00:13:33,150 yn nodau sydd ar yr un lefel yn y goeden. 182 00:13:33,150 --> 00:13:42,230 Felly, 3 a 9 yn frodyr a chwiorydd am eu bod ar yr un lefel yn y goeden. 183 00:13:42,230 --> 00:13:46,190 Mae gan y ddau yr un rhiant, 7. 184 00:13:46,190 --> 00:13:51,400 Mae'r 6 Nid oes gan frodyr a chwiorydd oherwydd 9 Nid oes unrhyw blant. 185 00:13:51,400 --> 00:13:55,540 Ac 7 Nid oes gan unrhyw frodyr a chwiorydd oherwydd ei fod yn wraidd ein coeden, 186 00:13:55,540 --> 00:13:59,010 a dim ond erioed 1 gwraidd. 187 00:13:59,010 --> 00:14:02,260 Am 7 i â brodyr neu chwiorydd byddai'n rhaid i fod yn nod uchod 7. 188 00:14:02,260 --> 00:14:07,480 Byddai rhaid i fod yn rhiant o 7, ym mha Achos 7 mwyach wraidd y goeden. 189 00:14:07,480 --> 00:14:10,480 Yna byddai rhiant newydd o 7 hefyd yn rhaid i chi gael plentyn, 190 00:14:10,480 --> 00:14:16,480 ac y byddai plentyn wedyn yn frawd neu chwaer o 7. 191 00:14:16,480 --> 00:14:21,040 >> Iawn. Symud ymlaen. 192 00:14:21,040 --> 00:14:24,930 Pan fyddwn yn dechrau ein trafodaeth o goed deuaidd, 193 00:14:24,930 --> 00:14:28,790 buom yn siarad am sut yr ydym yn mynd i'w defnyddio i 194 00:14:28,790 --> 00:14:32,800 cael mantais dros y ddwy araeau a rhestrau cysylltiedig. 195 00:14:32,800 --> 00:14:37,220 A'r ffordd yr ydym yn mynd i wneud hynny yw gyda'r eiddo archebu. 196 00:14:37,220 --> 00:14:41,080 Rydym yn dweud bod coeden ddeuaidd yn drefnus, yn ôl y fanyleb, 197 00:14:41,080 --> 00:14:45,740 os ar gyfer pob nod yn ein coeden, ei holl ddisgynyddion ar y chwith - 198 00:14:45,740 --> 00:14:48,670 y plentyn chwith a holl ddisgynyddion y plentyn chwith - yn 199 00:14:48,670 --> 00:14:54,510 werthoedd llai, a phob un o'r nodau ar y dde - 200 00:14:54,510 --> 00:14:57,770 i'r plentyn iawn a'r holl ddisgynyddion i'r plentyn iawn - yn 201 00:14:57,770 --> 00:15:02,800 gael nodau fwy na gwerth y nod ar hyn o bryd ein bod yn edrych ar. 202 00:15:02,800 --> 00:15:07,850 Dim ond ar gyfer symlrwydd, rydym yn mynd i gymryd yn ganiataol nad oes unrhyw nodau dyblyg yn ein coeden. 203 00:15:07,850 --> 00:15:11,180 Er enghraifft, yn y goeden hon, nid ydym yn mynd i ddelio â'r achos 204 00:15:11,180 --> 00:15:13,680 lle mae gennym y gwerth 7 yn y gwraidd 205 00:15:13,680 --> 00:15:16,720  ac yna rydym hefyd yn cael y gwerth 7 mewn mannau eraill yn y goeden. 206 00:15:16,720 --> 00:15:24,390 Yn yr achos hwn, byddwch yn sylwi bod y goeden yn cael ei archebu yn wir. 207 00:15:24,390 --> 00:15:26,510 Mae gennym y gwerth 7 yn y gwraidd. 208 00:15:26,510 --> 00:15:29,720 Mae popeth i'r chwith o 7 - 209 00:15:29,720 --> 00:15:35,310 os wyf yn dadwneud pob un o'r marciau bach yma - 210 00:15:35,310 --> 00:15:40,450 popeth i'r chwith o 7 - 3 a 6 - 211 00:15:40,450 --> 00:15:49,410 gwerthoedd hynny yn y ddwy llai na 7, a phopeth ar y dde - sydd ychydig y 9 - 212 00:15:49,410 --> 00:15:53,450 yn fwy na 7. 213 00:15:53,450 --> 00:15:58,650 >> Nid yw hyn yn y goeden archebu yn unig yn cynnwys y gwerthoedd hyn, 214 00:15:58,650 --> 00:16:03,120 ond gadewch i ni dynnu mwy ychydig ohonynt. 215 00:16:03,120 --> 00:16:05,030 Mae mewn gwirionedd yn criw cyfan o ffyrdd y gallwn wneud hyn. 216 00:16:05,030 --> 00:16:09,380 Rydw i'n mynd i ddefnyddio llaw-fer yn unig i gadw pethau'n syml lle - 217 00:16:09,380 --> 00:16:11,520 yn hytrach na thynnu allan y cyfan blychau-a-saethau - 218 00:16:11,520 --> 00:16:14,220 Im 'jyst yn mynd i dynnu rhifau ac ychwanegu saethau sy'n eu cysylltu. 219 00:16:14,220 --> 00:16:22,920 I ddechrau, byddwn yn unig yn ysgrifennu ein coed gwreiddiol eto lle cawsom 7, ac yna 3, 220 00:16:22,920 --> 00:16:25,590 ac yna 3 sylw at y ffaith yn ôl i'r dde i'r 6, 221 00:16:25,590 --> 00:16:30,890 a 7 wedi cael plentyn hawl a oedd 9. 222 00:16:30,890 --> 00:16:33,860 Iawn. Beth ffordd arall y gallem ysgrifennu goeden hon? 223 00:16:33,860 --> 00:16:38,800 Yn hytrach na chael 3 fod y plentyn chwith 7, 224 00:16:38,800 --> 00:16:41,360 gallem hefyd fod y 6 fel un y plentyn chwith 7, 225 00:16:41,360 --> 00:16:44,470 ac yna 3 fod y plentyn chwith y 6. 226 00:16:44,470 --> 00:16:48,520 Byddai hynny'n edrych fel hyn goeden dde yma lle dwi 'di cael 7, 227 00:16:48,520 --> 00:16:57,860 Yna, 6, yna 3, a 9 ar y dde. 228 00:16:57,860 --> 00:17:01,490 Nid ydym ychwaith yn rhaid i chi gael 7 fel ein nod gwraidd. 229 00:17:01,490 --> 00:17:03,860 Gallem hefyd 6 fel ein nod gwraidd. 230 00:17:03,860 --> 00:17:06,470 Beth fyddai'n sy'n edrych fel? 231 00:17:06,470 --> 00:17:09,230 Os ydym yn mynd i gynnal yr eiddo hwn gorchymyn, 232 00:17:09,230 --> 00:17:12,970 popeth i'r chwith o'r 6 wedi i fod yn llai nag ef. 233 00:17:12,970 --> 00:17:16,540 Dim ond un posibilrwydd, a dyna 3. 234 00:17:16,540 --> 00:17:19,869 Ond wedyn cyn i'r plentyn iawn o 6, mae gennym ddau bosibilrwydd. 235 00:17:19,869 --> 00:17:25,380 Yn gyntaf, gallem gael y 7 ac yna'r 9, 236 00:17:25,380 --> 00:17:28,850 neu gallem dynnu - fel fy mod ar fin gwneud yma - 237 00:17:28,850 --> 00:17:34,790 lle mae gennym y 9 fel y plentyn cywir o'r 6, 238 00:17:34,790 --> 00:17:39,050 ac yna y 7 fel y plentyn chwith y 9. 239 00:17:39,050 --> 00:17:44,240 >> Nawr, nid 7 a 6 yn unig y gwerthoedd posibl ar gyfer y gwraidd. 240 00:17:44,240 --> 00:17:50,200 Gallem hefyd wedi 3 fod wrth wraidd. 241 00:17:50,200 --> 00:17:52,240 Beth sy'n digwydd os 3 yw wrth wraidd? 242 00:17:52,240 --> 00:17:54,390 Yma, mae pethau yn cael ychydig bach diddorol. 243 00:17:54,390 --> 00:17:58,440 Nid oedd tri oes unrhyw werthoedd sy'n llai na hynny, 244 00:17:58,440 --> 00:18:02,070 fel bod ochr chwith gyfan y goeden yn unig yn mynd i fod yn null. 245 00:18:02,070 --> 00:18:03,230 Nid oes yn mynd i fod yn unrhyw beth yno. 246 00:18:03,230 --> 00:18:07,220 I'r dde, gallem restru'r pethau yn nhrefn esgynnol. 247 00:18:07,220 --> 00:18:15,530 Gallem gael 3, yna 6, yna 7, yna 9. 248 00:18:15,530 --> 00:18:26,710 Neu, gallem wneud 3, yna 6, yna 9, yna 7. 249 00:18:26,710 --> 00:18:35,020 Neu, gallem wneud 3, yna 7, yna 6, yna 9. 250 00:18:35,020 --> 00:18:40,950 Neu, 3, 7 - mewn gwirionedd dim, ni allwn wneud 7 anymore. 251 00:18:40,950 --> 00:18:43,330 Dyna ein un peth yno. 252 00:18:43,330 --> 00:18:54,710 Gallwn wneud 9, ac yna o 9 y gallwn ei wneud 6 ac yna 7. 253 00:18:54,710 --> 00:19:06,980 Neu, gallwn wneud 3, yna 9, yna 7, ac yna 6. 254 00:19:06,980 --> 00:19:12,490 >> Un peth i dynnu eich sylw at yma 255 00:19:12,490 --> 00:19:14,510 bod y coed ychydig yn rhyfedd yr olwg. 256 00:19:14,510 --> 00:19:17,840 Yn arbennig, os ydym yn edrych ar y 4 goed ar yr ochr dde - 257 00:19:17,840 --> 00:19:20,930 'N annhymerus' rhoi cylch o'u cwmpas, yma - 258 00:19:20,930 --> 00:19:28,410 coed hyn yn edrych bron yn union fel rhestr cysylltiedig. 259 00:19:28,410 --> 00:19:32,670 Mae pob nod Dim ond un plentyn, 260 00:19:32,670 --> 00:19:38,950 ac felly nid oes gennym unrhyw ran o'r strwythur coeden tebyg a welwn, er enghraifft, 261 00:19:38,950 --> 00:19:44,720  yn y goeden 1 sengl dros yma ar y chwith gwaelod. 262 00:19:44,720 --> 00:19:52,490 Mae'r coed hyn yn cael eu galw mewn gwirionedd yn ddirywiedig coed binary, 263 00:19:52,490 --> 00:19:54,170 a byddwn yn siarad am rhain yn fwy yn y dyfodol - 264 00:19:54,170 --> 00:19:56,730 yn enwedig os ydych yn mynd ymlaen i ddilyn cyrsiau gwyddoniaeth gyfrifiadurol arall. 265 00:19:56,730 --> 00:19:59,670 Mae'r coed hyn yn dirywio. 266 00:19:59,670 --> 00:20:03,780 Dydyn nhw ddim yn ddefnyddiol iawn oherwydd, yn wir, strwythur hwn yn cynnig ei hun 267 00:20:03,780 --> 00:20:08,060  i gyrchu ei gwaith tebyg i rhestr cysylltiedig. 268 00:20:08,060 --> 00:20:13,050 Nid ydym yn mynd i fanteisio ar y cof ychwanegol - mae hyn yn pwyntydd ychwanegol - 269 00:20:13,050 --> 00:20:18,840 oherwydd ein strwythur yn ddrwg yn y ffordd hon. 270 00:20:18,840 --> 00:20:24,700 Yn hytrach na mynd ar ac yn tynnu allan y coed deuaidd sydd 9 ar y gwraidd, 271 00:20:24,700 --> 00:20:27,220 sydd yn yr achos olaf y byddai gennym, 272 00:20:27,220 --> 00:20:32,380 rydym yn hytrach, ar y pwynt hwn, yn mynd i siarad ychydig am y term arall 273 00:20:32,380 --> 00:20:36,150 ein bod yn defnyddio wrth siarad am goed, a elwir yn uchder. 274 00:20:36,150 --> 00:20:45,460 >> Mae uchder coeden yw'r pellter o'r gwraidd i'r nod y rhan fwyaf o-bell, 275 00:20:45,460 --> 00:20:48,370 neu yn hytrach y nifer o hopys y byddai'n rhaid i chi eu gwneud er mwyn 276 00:20:48,370 --> 00:20:53,750 ddechrau o'r gwraidd ac yna yn y pen draw ar y nod y rhan fwyaf o-bell yn y goeden. 277 00:20:53,750 --> 00:20:57,330 Os ydym yn edrych ar rai o'r coed hyn yr ydym wedi tynnu i'r dde yma, 278 00:20:57,330 --> 00:21:07,870 gallwn weld bod os ydym yn cymryd y goeden yn y gornel chwith uchaf, ac rydym yn dechrau ar y 3, 279 00:21:07,870 --> 00:21:14,510 yna mae'n rhaid i ni wneud 1 hop i gyrraedd y 6, hop ail gyrraedd y 7, 280 00:21:14,510 --> 00:21:20,560 a hop trydydd gyrraedd y 9. 281 00:21:20,560 --> 00:21:26,120 Felly, mae'r uchder y goeden hon yw 3. 282 00:21:26,120 --> 00:21:30,640 Gallwn wneud yr un ymarfer ar gyfer y coed eraill a amlinellir â'r gwyrdd, 283 00:21:30,640 --> 00:21:40,100 a gwelwn fod uchder y rhain i gyd coed hefyd yn wir 3. 284 00:21:40,100 --> 00:21:45,230 Dyna rhan o'r hyn sy'n eu gwneud yn dirywio - 285 00:21:45,230 --> 00:21:53,750 bod eu taldra yn unig yw un yn llai na nifer y nodau yn y goeden gyfan. 286 00:21:53,750 --> 00:21:58,400 Os ydym yn edrych ar y goeden eraill sy'n amgylchynu gyda choch, ar y llaw arall, 287 00:21:58,400 --> 00:22:03,920 rydym yn gweld bod y nodau dail mwyaf-bell yw 6 a 9 - 288 00:22:03,920 --> 00:22:06,940 y dail sef y rheiny nodau nad oes ganddynt unrhyw blant. 289 00:22:06,940 --> 00:22:11,760 Felly, er mwyn cael oddi wrth y nod gwraidd naill ai i'r 6 neu 9, 290 00:22:11,760 --> 00:22:17,840 mae'n rhaid i ni wneud un hop i gyrraedd y 7 ac yna hop ail gyrraedd y 9, 291 00:22:17,840 --> 00:22:21,240 ac yn yr un modd, dim ond hop yr ail o'r 7 i gyrraedd y 6. 292 00:22:21,240 --> 00:22:29,080 Felly, uchder y goeden dros yma yn unig 2. 293 00:22:29,080 --> 00:22:35,330 Gallwch chi fynd yn ôl a gwneud hynny ar gyfer yr holl goed eraill a fuom yn trafod 294 00:22:35,330 --> 00:22:37,380 gan ddechrau gyda'r 7 a 6, 295 00:22:37,480 --> 00:22:42,500 a byddwch yn canfod bod y uchder yr holl o'r coed hynny hefyd yn 2. 296 00:22:42,500 --> 00:22:46,320 >> Y rheswm rydym wedi bod yn siarad am archebu coed deuaidd 297 00:22:46,320 --> 00:22:50,250 a pham eu bod yn oer oherwydd gallwch chwilio drwyddynt yn 298 00:22:50,250 --> 00:22:53,810 ffordd debyg iawn i chwilio dros amrywiaeth datrys. 299 00:22:53,810 --> 00:22:58,720 Dyma lle rydym yn sôn am gael yr adeg honno am-edrych gwell 300 00:22:58,720 --> 00:23:02,730 dros y rhestr syml sy'n gysylltiedig. 301 00:23:02,730 --> 00:23:05,010 Gyda rhestr cysylltiedig - os ydych am ddod o hyd i elfen benodol - 302 00:23:05,010 --> 00:23:07,470 rydych ar y gorau yn mynd i wneud rhyw fath o chwiliad llinol 303 00:23:07,470 --> 00:23:10,920 lle rydych yn dechrau ar ddechrau'r rhestr a hop un-wrth-un - 304 00:23:10,920 --> 00:23:12,620 un nod gan un nod - 305 00:23:12,620 --> 00:23:16,060 drwy'r rhestr gyfan nes i chi ddod o hyd i beth bynnag yr ydych yn chwilio am. 306 00:23:16,060 --> 00:23:19,440 Tra, os oes gennych chi goeden ddeuaidd sy'n cael ei storio yn y fformat 'n glws, 307 00:23:19,440 --> 00:23:23,300 gallwch chi mewn gwirionedd yn cael mwy o chwiliad deuaidd yn mynd ymlaen 308 00:23:23,300 --> 00:23:25,160 lle rydych yn rhannu a gorchfygu 309 00:23:25,160 --> 00:23:29,490 a chwilio drwy'r hanner priodol o'r goeden ym mhob cam. 310 00:23:29,490 --> 00:23:32,840 Gadewch i ni weld sut mae hynny'n gweithio. 311 00:23:32,840 --> 00:23:38,850 >> Os oes gennym - eto, yn mynd yn ôl at ein coed gwreiddiol - 312 00:23:38,850 --> 00:23:46,710 byddwn yn dechrau am 7, mae gennym 3 ar y chwith, 9 ar y dde, 313 00:23:46,710 --> 00:23:51,740 ac o dan y 3 gennym y 6. 314 00:23:51,740 --> 00:24:01,880 Os ydym am i chwilio am y rhif 6 yn y goeden hon, byddem yn dechrau yn y gwraidd. 315 00:24:01,880 --> 00:24:08,910 Byddem yn cymharu gwerth rydym yn chwilio am, dyweder 6, 316 00:24:08,910 --> 00:24:12,320 i'r gwerth storio yn y nod ein bod ar hyn o bryd yn edrych ar, 7, 317 00:24:12,320 --> 00:24:21,200 dod o hyd bod 6 yn wir llai na 7, ac felly byddem yn symud i'r chwith. 318 00:24:21,200 --> 00:24:25,530 Os yw gwerth o 6 wedi bod yn fwy na 7, byddem wedi symud yn hytrach ar y dde. 319 00:24:25,530 --> 00:24:29,770 Ers i ni yn gwybod hynny - oherwydd y strwythur ein coeden ddeuaidd archebu - 320 00:24:29,770 --> 00:24:33,910 pob un o'r gwerth sy'n llai na 7 yn mynd i gael eu storio ar y chwith 7, 321 00:24:33,910 --> 00:24:40,520 does dim angen i hyd yn oed yn trafferthu edrych drwy'r ochr dde y goeden. 322 00:24:40,520 --> 00:24:43,780 Ar ôl inni symud i'r chwith ac rydym yn awr yn y nod yn cynnwys 3, 323 00:24:43,780 --> 00:24:48,110 gallwn wneud y gymhariaeth un peth eto pan rydym yn cymharu y 3 a'r 6. 324 00:24:48,110 --> 00:24:52,430 Ac rydym yn dod o hyd, er bod 6 - y gwerth yr ydym yn chwilio amdano - yn fwy na 3, 325 00:24:52,430 --> 00:24:58,580 gallwn fynd i ochr dde y nod yn cynnwys 3. 326 00:24:58,580 --> 00:25:02,670 Does dim ochr chwith yma, felly gallem fod wedi anwybyddu hynny. 327 00:25:02,670 --> 00:25:06,510 Ond dim ond yn gwybod bod oherwydd ein bod yn edrych ar y goeden ei hun, 328 00:25:06,510 --> 00:25:08,660 a gallwn weld bod y goeden heb blant. 329 00:25:08,660 --> 00:25:13,640 >> Mae hefyd yn eithaf hawdd i chwilio am 6 yn y goeden hon os ydym yn ei wneud ein hunain fel bodau dynol, 330 00:25:13,640 --> 00:25:16,890 ond gadewch i ni ddilyn y broses hon yn fecanyddol fel cyfrifiadur a fyddai'n gwneud 331 00:25:16,890 --> 00:25:18,620 i ddeall yn iawn y algorithm. 332 00:25:18,620 --> 00:25:26,200 Ar y pwynt hwn, rydym yn awr yn edrych ar nod sy'n cynnwys 6, 333 00:25:26,200 --> 00:25:29,180 ac rydym yn chwilio am y gwerth 6, 334 00:25:29,180 --> 00:25:31,740 felly, yn wir, rydym wedi dod o hyd y nod priodol. 335 00:25:31,740 --> 00:25:35,070 Gwelsom y gwerth 6 yn ein coed, a gallwn atal ein chwiliad. 336 00:25:35,070 --> 00:25:37,330 Ar y pwynt hwn, yn dibynnu ar yr hyn sy'n mynd ymlaen, 337 00:25:37,330 --> 00:25:41,870 gallwn ddweud, ie, rydym wedi dod o hyd i'r gwerth 6, mae'n bodoli yn ein coeden. 338 00:25:41,870 --> 00:25:47,640 Neu, os ydym yn bwriadu gosod nod neu wneud rhywbeth, gallwn wneud hynny ar hyn o bryd. 339 00:25:47,640 --> 00:25:53,010 >> Gadewch i ni wneud lookups ychydig mwy dim ond i weld sut mae hyn yn gweithio. 340 00:25:53,010 --> 00:25:59,390 Gadewch i ni edrych ar yr hyn sy'n digwydd pe baem yn ceisio edrych ar y gwerth 10. 341 00:25:59,390 --> 00:26:02,970 Pe baem yn edrych ar y gwerth 10, byddem yn dechrau yn y gwraidd. 342 00:26:02,970 --> 00:26:07,070 Byddem yn gweld bod 10 yn fwy na 7, ac felly byddem yn symud i'r dde. 343 00:26:07,070 --> 00:26:13,640 Byddem wrth ein cyrraedd y 9 a chymharu 9 i 10 ac yn gweld bod 9 yn wir yn llai na 10. 344 00:26:13,640 --> 00:26:16,210 Felly eto, byddem yn ceisio symud i'r dde. 345 00:26:16,210 --> 00:26:20,350 Ond ar y pwynt hwn, byddem yn sylwi ein bod yn nod null. 346 00:26:20,350 --> 00:26:23,080 Does dim byd yno. Does dim byd lle dylai'r 10 fydd. 347 00:26:23,080 --> 00:26:29,360 Dyma lle y gallwn adrodd methu - nad oes yn wir rhif 10 yn y goeden. 348 00:26:29,360 --> 00:26:35,420 Ac yn olaf, gadewch i ni fynd drwy achos lle'r ydym yn ceisio edrych i fyny 1 yn y goeden. 349 00:26:35,420 --> 00:26:38,790 Mae hyn yn debyg i'r hyn sy'n digwydd os ydym yn edrych i fyny 10, ac eithrio yn hytrach na mynd i'r dde, 350 00:26:38,790 --> 00:26:41,260 rydyn ni'n mynd i fynd i'r chwith. 351 00:26:41,260 --> 00:26:46,170 Rydym yn dechrau ar y 7 ac yn gweld bod 1 yn llai na 7, felly rydym yn symud i'r chwith. 352 00:26:46,170 --> 00:26:51,750 Rydym yn cael y 3 a gweld bod 1 yn llai na 3, felly unwaith eto rydym yn ceisio symud i'r chwith. 353 00:26:51,750 --> 00:26:59,080 Ar y pwynt hwn mae gennym nod null, felly unwaith eto gallwn adrodd methiant. 354 00:26:59,080 --> 00:27:10,260 >> Os ydych am ddysgu mwy am goed deuaidd, 355 00:27:10,260 --> 00:27:14,420 mae criw cyfan o broblemau bach llawn hwyl y gallwch eu gwneud gyda nhw. 356 00:27:14,420 --> 00:27:19,450 Yr wyf yn awgrymu ymarfer tynnu allan o'r diagramau un wrth un 357 00:27:19,450 --> 00:27:21,910 ac yn dilyn drwy bob un o'r gwahanol gamau, 358 00:27:21,910 --> 00:27:25,060 oherwydd bydd hyn yn dod yn super-'n hylaw 359 00:27:25,060 --> 00:27:27,480 nid yn unig pan ydych yn gwneud y set encoding Huffman problem 360 00:27:27,480 --> 00:27:29,390 ond hefyd mewn cyrsiau yn y dyfodol - 361 00:27:29,390 --> 00:27:32,220 ond yn dysgu sut i dynnu allan y strwythurau data ac i feddwl am y problemau 362 00:27:32,220 --> 00:27:38,000 gyda beiro a phapur neu, yn yr achos hwn, iPad a bwyntil. 363 00:27:38,000 --> 00:27:41,000 >> Ar y pwynt hwn, fodd bynnag, rydym yn mynd i symud ymlaen i wneud rhywfaint o ymarfer codio 364 00:27:41,000 --> 00:27:44,870 ac mewn gwirionedd yn chwarae gyda coed hyn deuaidd a gweld. 365 00:27:44,870 --> 00:27:52,150 Rydw i'n mynd i newid yn ôl i fy chyfrifiadur. 366 00:27:52,150 --> 00:27:58,480 Ar gyfer y rhan o'r adran, yn hytrach na defnyddio CS50 Run neu CS50 Mannau, 367 00:27:58,480 --> 00:28:01,500 Rydw i'n mynd i ddefnyddio'r offer. 368 00:28:01,500 --> 00:28:04,950 >> Yn dilyn ynghyd â'r Set Problem fanyleb, 369 00:28:04,950 --> 00:28:07,740 Rwy'n gweld fy mod i'n fod i agor i fyny 'r offer, 370 00:28:07,740 --> 00:28:11,020 mynd i fy Dropbox folder, creu ffolder o'r enw Adran 7, 371 00:28:11,020 --> 00:28:15,730 ac yna yn creu ffeil o'r enw binary_tree.c. 372 00:28:15,730 --> 00:28:22,050 Yma rydym yn mynd. Rydw i wedi cael y cyfarpar sydd eisoes ar agor. 373 00:28:22,050 --> 00:28:25,910 Rydw i'n mynd dynnu i fyny derfynell. 374 00:28:25,910 --> 00:28:38,250 Rydw i'n mynd i fynd i'r ffolder Dropbox, yn gwneud cyfeiriadur o'r enw adran 7, 375 00:28:38,250 --> 00:28:42,230 a gweld ei fod yn hollol wag. 376 00:28:42,230 --> 00:28:48,860 Nawr rwy'n mynd i agor binary_tree.c. 377 00:28:48,860 --> 00:28:51,750 Iawn. Yma rydym yn mynd - ffeil wag. 378 00:28:51,750 --> 00:28:54,330 >> Gadewch i ni fynd yn ôl at y fanyleb. 379 00:28:54,330 --> 00:28:59,850 Mae'r fanyleb yn gofyn i greu diffiniad math newydd 380 00:28:59,850 --> 00:29:03,080 ar gyfer nod goeden ddeuol sy'n cynnwys gwerthoedd int - 381 00:29:03,080 --> 00:29:07,110 yn union fel y gwerthoedd yr ydym yn tynnu allan yn ein diagramau o'r blaen. 382 00:29:07,110 --> 00:29:11,740 Rydym yn mynd i ddefnyddio hyn boilerplate typedef ein bod ni wedi wneud yn iawn yma 383 00:29:11,740 --> 00:29:14,420 y dylech gydnabod o 5 Set Problemau - 384 00:29:14,420 --> 00:29:19,190 os ydych yn gwneud y ffordd tabl hash o conquering y rhaglen sillafu. 385 00:29:19,190 --> 00:29:22,540 Dylech hefyd gydnabod o adran yr wythnos diwethaf 386 00:29:22,540 --> 00:29:23,890 lle buom yn siarad am restrau cysylltiedig. 387 00:29:23,890 --> 00:29:27,870 Rydym wedi cael y typedef o nod strwythur, 388 00:29:27,870 --> 00:29:34,430 ac rydym wedi cael y nod strwythur yr enw hwn o nod strwythur ymlaen llaw 389 00:29:34,430 --> 00:29:39,350 fel y gallwn wedyn gyfeirio ato ers byddwn yn awyddus i gael awgrymiadau nod strwythur 390 00:29:39,350 --> 00:29:45,740 fel rhan o'n strwythur, ond rydym wedi wedyn yn amgylchynu hyn - 391 00:29:45,740 --> 00:29:47,700 neu yn hytrach, amgáu hyn - mewn typedef 392 00:29:47,700 --> 00:29:54,600 fel eu bod, yn ddiweddarach yn y cod, gallwn gyfeirio at y strwythur fel dim ond nod yn hytrach na nod strwythur. 393 00:29:54,600 --> 00:30:03,120 >> Mae hyn yn mynd i fod yn debyg iawn i'r diffiniad rhestr unigol-gysylltiedig a welsom yr wythnos diwethaf. 394 00:30:03,120 --> 00:30:20,070 I wneud hyn, gadewch i ni dim ond dechrau drwy ysgrifennu allan y boilerplate. 395 00:30:20,070 --> 00:30:23,840 Rydym yn gwybod bod yn rhaid inni gael gwerth cyfanrif, 396 00:30:23,840 --> 00:30:32,170 felly byddwn yn rhoi gwerth int, ac yna yn hytrach na gorfod dim ond un pwyntydd i'r elfen nesaf - 397 00:30:32,170 --> 00:30:33,970 fel y gwnaethom gyda unigol sy'n gysylltiedig â'r rhestrau - 398 00:30:33,970 --> 00:30:38,110 rydym yn mynd i gael awgrymiadau blant chwith ac i'r dde. 399 00:30:38,110 --> 00:30:42,880 Dyna 'n bert syml hefyd - plentyn nod strwythur * chwith; 400 00:30:42,880 --> 00:30:51,190 a strwythur nod * plentyn cywir;. Cool. 401 00:30:51,190 --> 00:30:54,740 Sy'n edrych fel dechrau 'n bert da. 402 00:30:54,740 --> 00:30:58,530 Gadewch i ni fynd yn ôl at y fanyleb. 403 00:30:58,530 --> 00:31:05,030 >> Nawr mae angen i ni ddatgan newidyn nod * byd-eang ar gyfer y gwraidd coeden. 404 00:31:05,030 --> 00:31:10,590 Rydym yn mynd i wneud hyn yn fyd-eang yn union fel rydym yn gwneud pwyntydd cyntaf yn ein rhestr gysylltiedig hefyd fyd-eang. 405 00:31:10,590 --> 00:31:12,690 Roedd hyn fel bod yn y swyddogaethau yr ydym yn ysgrifennu 406 00:31:12,690 --> 00:31:16,180 Nid oes raid i ni gadw basio o gwmpas y gwreiddiau - 407 00:31:16,180 --> 00:31:19,620 er y byddwn yn gweld, os ydych chi eisiau ysgrifennu swyddogaethau hyn recursively, 408 00:31:19,620 --> 00:31:22,830 efallai y byddai'n well i ddim hyd yn oed basio o gwmpas fel fyd-eang yn y lle cyntaf 409 00:31:22,830 --> 00:31:28,090 ac yn hytrach ymgychwyn yn lleol yn eich prif swyddogaeth. 410 00:31:28,090 --> 00:31:31,960 Ond, byddwn yn ei wneud yn fyd-eang i gychwyn. 411 00:31:31,960 --> 00:31:39,920 Unwaith eto, byddwn yn rhoi cwpl o fannau, ac yr wyf i'n mynd i ddatgan gwreiddyn * nod. 412 00:31:39,920 --> 00:31:46,770 Dim ond i wneud yn siŵr nad wyf yn gadael y uninitialized, dw i'n mynd i osod ei gyfartal i null. 413 00:31:46,770 --> 00:31:52,210 Yn awr, yn brif swyddogaeth - a byddwn yn ysgrifennu yn gyflym iawn iawn yma - 414 00:31:52,210 --> 00:32:00,450 int brif (int argc, Etholaeth golosg * argv []) - 415 00:32:00,450 --> 00:32:10,640 ac rydw i'n mynd i ddechrau datgan fy amrywiaeth argv fel Etholaeth yn union fel fy mod yn gwybod 416 00:32:10,640 --> 00:32:14,550 bod y dadleuon yn dadleuon yr wyf debygol dont 'angen ei addasu. 417 00:32:14,550 --> 00:32:18,390 Os ydw i eisiau eu haddasu mae'n debyg y dylwn fod yn gwneud copïau ohonynt. 418 00:32:18,390 --> 00:32:21,740 Byddwch yn gweld hyn yn llawer mewn cod. 419 00:32:21,740 --> 00:32:25,440 Mae'n iawn naill ffordd neu'r llall. Mae'n iawn i adael fel - hepgorer y Etholaeth os hoffech chi. 420 00:32:25,440 --> 00:32:28,630 Rwyf fel arfer yn ei roi mewn dim ond er mwyn i mi atgoffa fy hun 421 00:32:28,630 --> 00:32:33,650  fy mod yn debygol dont 'angen i addasu y dadleuon hynny. 422 00:32:33,650 --> 00:32:39,240 >> Fel bob amser, yr wyf i'n mynd i gynnwys 0 ffurflen hon lein ar y end of main. 423 00:32:39,240 --> 00:32:45,730 Yma, byddaf yn ymgychwyn fy nod gwraidd. 424 00:32:45,730 --> 00:32:48,900 Fel mae'n sefyll ar hyn o bryd, mae gen i pwyntydd sydd wedi gosod i null, 425 00:32:48,900 --> 00:32:52,970 felly mae'n pwyntio at ddim byd. 426 00:32:52,970 --> 00:32:57,480 Er mwyn dechrau mewn gwirionedd yn adeiladu'r nod, 427 00:32:57,480 --> 00:32:59,250 Tro cyntaf i mi angen i ddyrannu cof ar ei gyfer. 428 00:32:59,250 --> 00:33:05,910 Rydw i'n mynd i wneud hynny drwy wneud cof ar y domen gan ddefnyddio malloc. 429 00:33:05,910 --> 00:33:10,660 Rydw i'n mynd i osod gwreiddiau cyfartal i'r canlyniad malloc, 430 00:33:10,660 --> 00:33:19,550 ac rydw i'n mynd i ddefnyddio'r gweithredwr sizeof i gyfrifo faint o nod. 431 00:33:19,550 --> 00:33:24,990 Y rheswm yr wyf yn defnyddio sizeof nod yn hytrach na, dyweder, 432 00:33:24,990 --> 00:33:37,020 gwneud rhywbeth fel hyn - malloc (4 + 4 +4) neu malloc 12 - 433 00:33:37,020 --> 00:33:40,820 oherwydd fy mod am fy cod i fod mor gydnaws ag y bo modd. 434 00:33:40,820 --> 00:33:44,540 Rwyf am fod yn gallu ei gymryd. Ffeil c, llunio ar y peiriant, 435 00:33:44,540 --> 00:33:48,820 ac yna llunio ar fy 64-bit Mac - 436 00:33:48,820 --> 00:33:52,040 neu ar bensaernïaeth hollol wahanol - 437 00:33:52,040 --> 00:33:54,640 ac yr wyf am i hyn oll yn gweithio yr un fath. 438 00:33:54,640 --> 00:33:59,510 >> Os ydw i'n gwneud rhagdybiaethau ynglŷn â faint o newidynnau - 439 00:33:59,510 --> 00:34:02,070 faint o int neu faint yn saeth - 440 00:34:02,070 --> 00:34:06,070 yna rwyf hefyd yn gwneud rhagdybiaethau am y mathau o saernïaeth 441 00:34:06,070 --> 00:34:10,440 y gall fy cod yn llwyddiannus lunio pan rhedeg. 442 00:34:10,440 --> 00:34:15,030 Bob amser yn defnyddio sizeof yn hytrach na llaw grynhoi y caeau strwythur. 443 00:34:15,030 --> 00:34:20,500 Y rheswm arall yw y gallai hefyd fod padin bod y casglwr yn rhoi i mewn i'r strwythur. 444 00:34:20,500 --> 00:34:26,570 Hyd yn oed dim ond grynhoi y caeau unigol yn rhywbeth yr ydych fel arfer am ei wneud, 445 00:34:26,570 --> 00:34:30,340 felly, dilëwch y llinell. 446 00:34:30,340 --> 00:34:33,090 Nawr, i 'n sylweddol ymgychwyn y nod gwraidd, 447 00:34:33,090 --> 00:34:36,489 Rydw i'n mynd i gael i dopio mewn gwerthoedd ar gyfer pob un o'i feysydd gwahanol. 448 00:34:36,489 --> 00:34:41,400 Er enghraifft, ar gyfer gwerth Rwy'n gwybod fy mod am i ymgychwyn i 7, 449 00:34:41,400 --> 00:34:46,920 ac am nawr rwy'n mynd i osod y plentyn chwith i fod yn null 450 00:34:46,920 --> 00:34:55,820 a'r plentyn hawl i fod yn null. Great! 451 00:34:55,820 --> 00:35:02,670 Rydym wedi gwneud y rhan honno o'r fanyleb. 452 00:35:02,670 --> 00:35:07,390 >> Mae'r fanyleb i lawr ar waelod y dudalen 3 yn gofyn i mi greu tair nodau - 453 00:35:07,390 --> 00:35:10,600 un yn cynnwys 3, un yn cynnwys 6, ac un gyda 9 - 454 00:35:10,600 --> 00:35:14,210 ac yna gwifren i fyny felly mae'n edrych yn union fel ein diagram coeden 455 00:35:14,210 --> 00:35:17,120 ein bod yn siarad amdano'n flaenorol. 456 00:35:17,120 --> 00:35:20,450 Gadewch i ni wneud hynny yn weddol gyflym yma. 457 00:35:20,450 --> 00:35:26,270 Byddwch yn gweld yn gyflym iawn fy mod i'n mynd i ddechrau ysgrifennu criw o god dyblyg. 458 00:35:26,270 --> 00:35:32,100 Rydw i'n mynd i greu * nod a rydw i'n mynd i alw tri. 459 00:35:32,100 --> 00:35:36,000 Rydw i'n mynd i osod fod yn gyfartal i malloc (sizeof (nod)). 460 00:35:36,000 --> 00:35:41,070 Rydw i'n mynd i osod tri-> werth = 3. 461 00:35:41,070 --> 00:35:54,780 Tri -> left_child = NULL, tair -> NULL = hawl _child, yn ogystal. 462 00:35:54,780 --> 00:36:01,150 Mae hynny'n edrych yn eithaf tebyg i ymgychwyn y gwraidd, a dyna'n union beth 463 00:36:01,150 --> 00:36:05,760 Rydw i'n mynd i gael i wneud os byddaf yn dechrau ymgychwyn 6 a 9 yn ogystal. 464 00:36:05,760 --> 00:36:20,720 'N annhymerus' yn gwneud hynny yn gyflym iawn yma - yn wir, yr wyf i'n mynd i wneud copi bach a gludo, 465 00:36:20,720 --> 00:36:46,140 a gwneud yn siŵr fy mod i - iawn. 466 00:36:46,470 --> 00:37:09,900  Yn awr, rydw i wedi got ei gopïo a gallaf fynd yn ei flaen ac yn gosod hwn cyfartal i 6. 467 00:37:09,900 --> 00:37:14,670 Gallwch weld bod hyn yn cymryd dro ac nid yw'n super-effeithlon. 468 00:37:14,670 --> 00:37:22,610 Mewn dim ond ychydig bach, byddwn yn ysgrifennu swyddogaeth a fydd yn gwneud hyn i ni. 469 00:37:22,610 --> 00:37:32,890 Rwyf am i gymryd lle'r hyn gyda 9, lle hynny, 6. 470 00:37:32,890 --> 00:37:37,360 >> Nawr rydym wedi cael ein holl nodau creu a'u ymgychwyn. 471 00:37:37,360 --> 00:37:41,200 Rydym wedi cael ein gwreiddiau a bennwyd yn hafal i 7, neu sy'n cynnwys y gwerth 7, 472 00:37:41,200 --> 00:37:46,510 ein nod sy'n cynnwys 3, ein nod sy'n cynnwys 6, ac mae ein nod sy'n cynnwys 9. 473 00:37:46,510 --> 00:37:50,390 Ar y pwynt hwn, y cyfan mae'n rhaid i ni ei wneud yw popeth wifren i fyny. 474 00:37:50,390 --> 00:37:53,020 Y rheswm pam yr ymgychwyn yr holl awgrymiadau i null yn unig fel fy mod yn gwneud yn siŵr bod 475 00:37:53,020 --> 00:37:56,260 Nid oes gennyf unrhyw awgrymiadau uninitialized yno trwy ddamwain. 476 00:37:56,260 --> 00:38:02,290 A hefyd ers hynny, ar y pwynt hwn, dim ond rhaid i mewn gwirionedd yn cysylltu'r nodau i'w gilydd - 477 00:38:02,290 --> 00:38:04,750 i'r rhai eu bod yn gysylltiedig mewn gwirionedd i - nid oes rhaid i mi fynd drwyddo ac i wneud 478 00:38:04,750 --> 00:38:08,240 yn siwr bod yr holl nulls yn yno yn y mannau priodol. 479 00:38:08,240 --> 00:38:15,630 >> Gan ddechrau ar y gwraidd, yr wyf yn gwybod bod plentyn y gwreiddyn yn chwith yw 3. 480 00:38:15,630 --> 00:38:21,250 Gwn fod plentyn y gwraidd hawl yw 9. 481 00:38:21,250 --> 00:38:24,880 Ar ôl hynny, yn unig blentyn eraill yr wyf wedi gadael i mi boeni am 482 00:38:24,880 --> 00:38:39,080 yw 3 y plentyn iawn, sydd 6. 483 00:38:39,080 --> 00:38:44,670 Ar y pwynt hwn, mae'r cyfan yn edrych yn eithaf da. 484 00:38:44,670 --> 00:38:54,210 Byddwn yn dileu rhai o'r llinellau. 485 00:38:54,210 --> 00:38:59,540 Nawr popeth yn edrych yn eithaf da. 486 00:38:59,540 --> 00:39:04,240 Gadewch i ni fynd yn ôl at ein manyleb a gweld yr hyn sydd gennym i'w wneud nesaf. 487 00:39:04,240 --> 00:39:07,610 >> Ar y pwynt hwn, mae'n rhaid i ni ysgrifennu swyddogaeth a elwir yn 'cynnwys' 488 00:39:07,610 --> 00:39:14,150 gyda prototeip o 'yn cynnwys bool (canolradd gwerth)'. 489 00:39:14,150 --> 00:39:17,060 Ac mae hyn yn cynnwys swyddogaeth yn mynd i ddychwelyd yn wir 490 00:39:17,060 --> 00:39:21,200  os yw'r goeden yn tynnu sylw at amrywiol gan ein gwreiddiau byd-eang 491 00:39:21,200 --> 00:39:26,950  yn cynnwys y gwerth trosglwyddo i mewn i'r swyddogaeth a ffug fel arall. 492 00:39:26,950 --> 00:39:29,000 Gadewch i ni fynd yn ei flaen a gwneud hynny. 493 00:39:29,000 --> 00:39:35,380 Mae hyn yn mynd i fod yn union fel y am-edrych a wnaethom â llaw ar y iPad dim ond ychydig bach yn ôl. 494 00:39:35,380 --> 00:39:40,130 Dewch i chwyddo yn ôl mewn ychydig ac yn sgrolio i fyny. 495 00:39:40,130 --> 00:39:43,130 Rydym yn mynd i roi hyn swyddogaeth dde uwchben ein prif swyddogaeth 496 00:39:43,130 --> 00:39:48,990 fel nad oes raid i ni wneud unrhyw fath o brototeipio. 497 00:39:48,990 --> 00:39:55,960 Felly, bool yn cynnwys (int gwerth). 498 00:39:55,960 --> 00:40:00,330 Dyna ni. Mae ein datganiad boilerplate. 499 00:40:00,330 --> 00:40:02,900 Dim ond i wneud yn siŵr y bydd hyn yn llunio, 500 00:40:02,900 --> 00:40:06,820 Rydw i'n mynd i fynd yn ei flaen a dim ond ei osod yn gyfartal i ddychwelyd ffug. 501 00:40:06,820 --> 00:40:09,980 Ar hyn o bryd swyddogaeth hon nid yn unig fydd yn gwneud unrhyw beth a bob amser yn adrodd bod 502 00:40:09,980 --> 00:40:14,010 Nid yw gwerth yr ydym yn chwilio amdano yw yn y goeden. 503 00:40:14,010 --> 00:40:16,280 >> Ar y pwynt hwn, mae'n debyg ei fod yn syniad da - 504 00:40:16,280 --> 00:40:19,600 ers i ni wedi ysgrifennu criw cyfan o god ac nid ydym wedi ceisio hyd yn oed ei brofi eto - 505 00:40:19,600 --> 00:40:22,590 i wneud yn siŵr bod y cyfan yn llunio. 506 00:40:22,590 --> 00:40:27,460 Mae yna un neu ddau o bethau y mae'n rhaid i ni ei wneud i wneud yn siŵr y bydd hyn yn crynhoi. 507 00:40:27,460 --> 00:40:33,530 Yn gyntaf, gweld a ydym wedi bod yn defnyddio unrhyw swyddogaethau mewn unrhyw llyfrgelloedd nad ydym wedi cynnwys eto. 508 00:40:33,530 --> 00:40:37,940 Mae'r swyddogaethau rydym wedi defnyddio hyd yn hyn yn malloc, 509 00:40:37,940 --> 00:40:43,310 ac yna rydym ni hefyd wedi bod yn defnyddio'r math hwn - y math hwn nonstandard a elwir yn 'bool' - 510 00:40:43,310 --> 00:40:45,750 sydd wedi'i gynnwys yn y ffeil pennawd bool safonol. 511 00:40:45,750 --> 00:40:53,250 Rydym yn bendant yn awyddus i gynnwys bool.h safonol ar gyfer y math bool, 512 00:40:53,250 --> 00:40:59,230 ac rydym hefyd yn awyddus i gynnwys lib.h # safonol ar gyfer y llyfrgelloedd safonol 513 00:40:59,230 --> 00:41:03,530 sy'n cynnwys malloc, ac yn rhydd, a hynny i gyd. 514 00:41:03,530 --> 00:41:08,660 Felly, chwyddo allan, rydyn ni'n mynd i roi'r gorau iddi. 515 00:41:08,660 --> 00:41:14,190 Gadewch i ni geisio gwneud yn siŵr bod hyn mewn gwirionedd oedd crynhoi. 516 00:41:14,190 --> 00:41:18,150 Rydym yn gweld ei fod yn ei wneud, felly rydym ar y trywydd iawn. 517 00:41:18,150 --> 00:41:22,990 >> Gadewch i ni agor binary_tree.c eto. 518 00:41:22,990 --> 00:41:34,530 Mae'n llunio. Gadewch i ni fynd i lawr ac yn gwneud yn siŵr ein bod yn ychwanegu rhai galwadau i'n Yn cynnwys swyddogaeth - 519 00:41:34,530 --> 00:41:40,130 dim ond er mwyn gwneud yn siŵr bod i gyd yn dda ac yn dda. 520 00:41:40,130 --> 00:41:43,170 Er enghraifft, pan fyddwn yn gwneud rhai lookups yn ein coeden yn gynharach, 521 00:41:43,170 --> 00:41:48,500 rydym yn ceisio edrych ar y 6 gwerthoedd, 10, ac 1, ac roeddem yn gwybod bod 6 oedd yn y goeden, 522 00:41:48,500 --> 00:41:52,220 10 Nid oedd yn y goeden, ac nid 1 yn y goeden chwaith. 523 00:41:52,220 --> 00:41:57,230 Gadewch i ni ddefnyddio'r galwadau hynny sampl fel ffordd at chyfrif i maes ai peidio 524 00:41:57,230 --> 00:41:59,880 Yn cynnwys ein swyddogaeth yn gweithio. 525 00:41:59,880 --> 00:42:05,210 Er mwyn gwneud hynny, dw i'n mynd i ddefnyddio'r swyddogaeth printf, 526 00:42:05,210 --> 00:42:10,280 ac rydym yn mynd i argraffu'r canlyniad yr alwad i cynnwys. 527 00:42:10,280 --> 00:42:13,280 Dw i'n mynd i roi mewn llinyn "yn cynnwys (% d) = oherwydd 528 00:42:13,280 --> 00:42:20,470  rydyn ni'n mynd i plwg yn y gwerth yr ydym yn mynd i chwilio am, 529 00:42:20,470 --> 00:42:27,130 a =% s \ n "a defnyddio hynny fel ein llinyn fformat. 530 00:42:27,130 --> 00:42:30,720 Rydym yn unig yn mynd i weld - yn llythrennol argraffwch ar y sgrin - 531 00:42:30,720 --> 00:42:32,060 hyn sy'n edrych fel galwad swyddogaeth. 532 00:42:32,060 --> 00:42:33,580 Nid yw hyn mewn gwirionedd yn yr alwad swyddogaeth. 533 00:42:33,580 --> 00:42:36,760  Mae hyn yn unig yw llinyn a gynlluniwyd i edrych fel galwad swyddogaeth. 534 00:42:36,760 --> 00:42:41,140 >> Nawr, rydyn ni'n mynd i dopio i mewn gwerthoedd. 535 00:42:41,140 --> 00:42:43,580 Rydym yn mynd i geisio cynnwys ar 6, 536 00:42:43,580 --> 00:42:48,340 ac yna beth ydym yn mynd i'w wneud yma yw defnyddio'r gweithredwr teiran. 537 00:42:48,340 --> 00:42:56,340 Gadewch i ni weld - yn cynnwys 6 - felly, yn awr yr wyf wedi cynnwys 6 a os yn cynnwys 6 yn wir, 538 00:42:56,340 --> 00:43:01,850 y llinyn ein bod ni'n mynd i'w anfon at gymeriad fformat y% s 539 00:43:01,850 --> 00:43:04,850 yn mynd i fod y llinyn "gwir". 540 00:43:04,850 --> 00:43:07,690 Gadewch i ni sgroliwch dros ychydig. 541 00:43:07,690 --> 00:43:16,210 Fel arall, rydym yn awyddus i anfon y llinyn "ffug" os yn cynnwys 6 yn dychwelyd ffug. 542 00:43:16,210 --> 00:43:19,730 Mae hyn ychydig yn goofy-edrych, ond yr wyf yn ffigwr efallai y byddwn yn ogystal yn dangos 543 00:43:19,730 --> 00:43:23,780 hyn y mae'r gweithredwr teiran edrych fel gan nad ydym wedi ei weld am dro. 544 00:43:23,780 --> 00:43:27,670 Bydd hyn yn neis, ffordd hwylus at chyfrif i maes os yw ein swyddogaeth Yn cynnwys yn gweithio. 545 00:43:27,670 --> 00:43:30,040 Rydw i'n mynd i sgrolio yn ôl dros y chwith, 546 00:43:30,040 --> 00:43:39,900 ac rydw i'n mynd i gopïo a gludo y llinell hon ychydig o weithiau. 547 00:43:39,900 --> 00:43:44,910 Mae'n newid rhai o'r gwerthoedd hyn o gwmpas, 548 00:43:44,910 --> 00:43:59,380 felly mae hyn yn mynd i fod yn 1, ac mae hyn yn mynd i fod yn 10. 549 00:43:59,380 --> 00:44:02,480 >> Ar y pwynt hwn mae gennym swyddogaeth Yn cynnwys 'n glws. 550 00:44:02,480 --> 00:44:06,080 Rydym wedi cael rhai profion, a chawn weld os yw hyn yn holl waith. 551 00:44:06,080 --> 00:44:08,120 Ar y pwynt hwn rydym wedi ysgrifennu cod rhai mwy. 552 00:44:08,120 --> 00:44:13,160 Amser i roi'r gorau iddi allan a gwneud yn siwr fod popeth yn dal llunio. 553 00:44:13,160 --> 00:44:20,360 Quit allan, ac yn awr gad i ni geisio gwneud goeden ddeuol eto. 554 00:44:20,360 --> 00:44:22,260 Wel, mae'n edrych fel ein bod wedi cael camgymeriad, 555 00:44:22,260 --> 00:44:26,930 ac rydym wedi got hyn yn glir yn datgan y swyddogaeth llyfrgell printf. 556 00:44:26,930 --> 00:44:39,350 Mae'n edrych fel y mae angen i fynd i mewn ac # yn cynnwys standardio.h. 557 00:44:39,350 --> 00:44:45,350 A chyda hynny, dylai popeth lunio. Rydym i gyd yn dda. 558 00:44:45,350 --> 00:44:50,420 Nawr gadewch i ni geisio rhedeg goeden ddeuaidd a gweld beth sy'n digwydd. 559 00:44:50,420 --> 00:44:53,520 Dyma ni,. / Binary_tree, 560 00:44:53,520 --> 00:44:55,190 ac rydym yn gweld bod, wrth i ni ddisgwyl - 561 00:44:55,190 --> 00:44:56,910 oherwydd nad ydym wedi rhoi ar waith yn cynnwys eto, 562 00:44:56,910 --> 00:44:59,800 neu yn hytrach, rydym wedi rhoi dim ond yn gyfnewid ffug - 563 00:44:59,800 --> 00:45:03,300 gwelwn ei fod yn unig yn dychwelyd ffug ar gyfer pob un ohonynt, 564 00:45:03,300 --> 00:45:06,180 fel bod ei gyd yn gweithio ar gyfer y rhan fwyaf yn eithaf da. 565 00:45:06,180 --> 00:45:11,860 >> Gadewch i ni fynd yn ôl i mewn ac mewn gwirionedd yn gweithredu yn cynnwys ar y pwynt hwn. 566 00:45:11,860 --> 00:45:17,490 Rydw i'n mynd i sgrolio i lawr, chwyddo i mewn, ac - 567 00:45:17,490 --> 00:45:22,330 cofiwch, mae'r algorithm a ddefnyddiwyd gennym oedd ein bod yn dechrau ar y nod gwraidd 568 00:45:22,330 --> 00:45:28,010 ac yna ar bob nod yr ydym yn dod ar eu traws, rydym yn gwneud cymhariaeth, 569 00:45:28,010 --> 00:45:32,380 ac yn seiliedig ar y gymhariaeth rydym naill ai yn symud i'r plentyn chwith neu i'r plentyn iawn. 570 00:45:32,380 --> 00:45:39,670 Mae hyn yn mynd i edrych yn debyg iawn i'r cod deuaidd chwilio ein bod wedi ysgrifennu yn gynharach yn y tymor. 571 00:45:39,670 --> 00:45:47,810 Pan fyddwn yn dechrau i ffwrdd, rydym yn gwybod ein bod yn awyddus i ddal gafael ar y nod ar hyn o bryd 572 00:45:47,810 --> 00:45:54,050 ein bod yn edrych arno, ac y nod ar hyn o bryd yn mynd i gael ei ymgychwyn i'r nod gwraidd. 573 00:45:54,050 --> 00:45:56,260 Ac yn awr, rydym yn mynd i gadw i fynd drwy'r coed, 574 00:45:56,260 --> 00:45:58,140 a chofiwch fod ein cyflwr rhoi'r gorau - 575 00:45:58,140 --> 00:46:01,870  pan fyddwn yn gweithio mewn gwirionedd drwy'r enghraifft trwy llaw - 576 00:46:01,870 --> 00:46:03,960 oedd pan rydym yn dod ar draws nod null, 577 00:46:03,960 --> 00:46:05,480 nid pan fyddwn yn edrych ar blentyn null, 578 00:46:05,480 --> 00:46:09,620 ond yn hytrach pan ydym mewn gwirionedd yn symud i nod yn y goeden 579 00:46:09,620 --> 00:46:12,640 a dod o hyd ein bod yn nod null. 580 00:46:12,640 --> 00:46:20,720 Rydym yn mynd i ailadrodd hyd nes nad cyf yn hafal i null. 581 00:46:20,720 --> 00:46:22,920 A beth ydym yn mynd i'w wneud? 582 00:46:22,920 --> 00:46:31,610 Rydym yn mynd i brofi os (cyf - gwerth ==> werth), 583 00:46:31,610 --> 00:46:35,160 yna rydym yn gwybod ein bod wedi dod o hyd mewn gwirionedd yn y nod yr ydym yn chwilio amdano. 584 00:46:35,160 --> 00:46:40,450 Felly yma, gallwn ddychwelyd yn wir. 585 00:46:40,450 --> 00:46:49,830 Fel arall, rydym am weld a yw'r gwerth yn llai na gwerth. 586 00:46:49,830 --> 00:46:53,850 Os werth y nod ar hyn o bryd yn llai na gwerth yr ydym yn chwilio amdano, 587 00:46:53,850 --> 00:46:57,280 rydym yn mynd i symud i'r dde. 588 00:46:57,280 --> 00:47:10,600 Felly, cyf = cyf -> right_child, ac fel arall, rydym yn mynd i symud i'r chwith. 589 00:47:10,600 --> 00:47:17,480 cyf = cyf -> left_child;. Pretty syml. 590 00:47:17,480 --> 00:47:22,830 >> Mae'n debyg y byddwch yn cydnabod y ddolen sy'n edrych yn debyg iawn i'r hyn gan 591 00:47:22,830 --> 00:47:27,580 chwiliad deuaidd yn gynharach yn y tymor, ac eithrio hynny, rydym yn delio â isel, canol, ac yn uchel. 592 00:47:27,580 --> 00:47:30,000 Yma, rydym yn unig rhaid i ni edrych ar werth ar hyn o bryd, 593 00:47:30,000 --> 00:47:31,930 felly mae'n braf a syml. 594 00:47:31,930 --> 00:47:34,960 Gadewch i ni wneud yn siwr y cod hwn yn gweithio. 595 00:47:34,960 --> 00:47:42,780 Yn gyntaf, gwnewch yn siŵr ei fod yn llunio. Edrych fel y mae'n ei wneud. 596 00:47:42,780 --> 00:47:47,920 Gadewch i ni geisio rhedeg. 597 00:47:47,920 --> 00:47:50,160 Ac yn wir, bydd yn argraffu gwybod popeth yr ydym yn ei ddisgwyl. 598 00:47:50,160 --> 00:47:54,320 Mae'n canfod 6 yn y goeden, nid yw'n dod o hyd i 10 oherwydd nid 10 sydd yn y goeden, 599 00:47:54,320 --> 00:47:57,740 ac nid yw'n darganfod 1 naill ai oherwydd 1 ddim hefyd yn y goeden. 600 00:47:57,740 --> 00:48:01,420 Pethau Cool. 601 00:48:01,420 --> 00:48:04,470 >> Iawn. Gadewch i ni fynd yn ôl at ein manyleb a gweld beth sydd nesaf. 602 00:48:04,470 --> 00:48:07,990 Yn awr, mae eisiau ychwanegu nodau rhai mwy i ein coeden. 603 00:48:07,990 --> 00:48:11,690 Mae am i ychwanegu 5, 2, ac 8, a gwneud yn siŵr bod ein cynnwys cod 604 00:48:11,690 --> 00:48:13,570 dal i weithio yn ôl y disgwyl. 605 00:48:13,570 --> 00:48:14,900 Gadewch i ni fynd yn gwneud hynny. 606 00:48:14,900 --> 00:48:19,430 Ar y pwynt hwn, yn hytrach na gwneud y copi a gludo blino eto, 607 00:48:19,430 --> 00:48:23,770 gadewch i ni ysgrifennu swyddogaeth i mewn gwirionedd yn creu nod. 608 00:48:23,770 --> 00:48:27,740 Os byddwn yn sgroliwch i lawr yr holl ffordd i brif, gwelwn ein bod wedi bod yn gwneud hyn 609 00:48:27,740 --> 00:48:31,210 cod yn debyg iawn drosodd a throsodd bob tro yr ydym am ei greu nod. 610 00:48:31,210 --> 00:48:39,540 >> Gadewch i ni ysgrifennu swyddogaeth a fydd mewn gwirionedd yn adeiladu nod i ni a'i dychwelyd. 611 00:48:39,540 --> 00:48:41,960 Rydw i'n mynd i alw yn build_node. 612 00:48:41,960 --> 00:48:45,130 Rydw i'n mynd i adeiladu nod gyda gwerth penodol. 613 00:48:45,130 --> 00:48:51,040 Chwyddo i mewn yma. 614 00:48:51,040 --> 00:48:56,600 Y peth cyntaf i mi i'n mynd i wneud mewn gwirionedd yn creu lle ar gyfer y nod ar y domen. 615 00:48:56,600 --> 00:49:05,400 Felly, nod * n = malloc (sizeof (nod)); n -> Gwerth = gwerth; 616 00:49:05,400 --> 00:49:14,960 ac wedyn yma, Im 'jyst yn mynd i ymgychwyn holl feysydd i fod gwerthoedd priodol. 617 00:49:14,960 --> 00:49:22,500 Ac ar y diwedd un, byddwn yn dychwelyd ein nod. 618 00:49:22,500 --> 00:49:28,690 Iawn. Un peth i'w nodi yw bod y swyddogaeth hon iawn yma 619 00:49:28,690 --> 00:49:34,320 yn mynd i ddychwelyd pwyntydd i'r cof sydd wedi bod yn domen-ddyrannu. 620 00:49:34,320 --> 00:49:38,880 Beth braf am hyn yw bod y nod yn awr - 621 00:49:38,880 --> 00:49:42,420 mae'n rhaid i ni ddatgan hynny ar y domen oherwydd os ydym datgan ei fod ar y simnai 622 00:49:42,420 --> 00:49:45,050 ni fyddem yn gallu gwneud hynny yn y swyddogaeth hon fel hyn. 623 00:49:45,050 --> 00:49:47,690 Byddai hynny'n cof yn mynd allan o gwmpas 624 00:49:47,690 --> 00:49:51,590 ac y byddai'n annilys os ydym yn ceisio cael mynediad iddo yn nes ymlaen. 625 00:49:51,590 --> 00:49:53,500 Gan ein bod yn datgan domen-ddyrannu cof, 626 00:49:53,500 --> 00:49:55,830 rydym yn mynd i gael i gymryd gofal o ryddhau yn ddiweddarach 627 00:49:55,830 --> 00:49:58,530 nid ar gyfer ein rhaglen i ollwng unrhyw cof. 628 00:49:58,530 --> 00:50:01,270 Rydym wedi bod yn punting ar hynny am bopeth arall yn y cod 629 00:50:01,270 --> 00:50:02,880 yn unig ar gyfer mwyn symlrwydd ar y pryd, 630 00:50:02,880 --> 00:50:05,610 ond os ydych chi erioed wedi ysgrifennu swyddogaeth sy'n edrych fel hyn 631 00:50:05,610 --> 00:50:10,370 pan fyddwch wedi cael - mae rhai yn galw ei fod yn malloc neu realloc y tu mewn - 632 00:50:10,370 --> 00:50:14,330 ydych am wneud yn siŵr eich bod yn rhoi rhyw fath o sylwadau yma sy'n dweud, 633 00:50:14,330 --> 00:50:29,970 hey, chi'n gwybod, yn dychwelyd yn nod domen-ddyrannwyd ymgychwyn gyda'r gwerth basio i mewn. 634 00:50:29,970 --> 00:50:33,600 Ac yna ydych am wneud yn siŵr eich bod yn rhoi mewn rhyw fath o nodyn sy'n dweud 635 00:50:33,600 --> 00:50:41,720 rhaid i'r galwr ryddhau'r cof dychwelyd. 636 00:50:41,720 --> 00:50:45,450 Drwy hynny, os bydd rhywun erioed yn mynd ac yn defnyddio swyddogaeth honno, 637 00:50:45,450 --> 00:50:48,150 maent yn gwybod bod beth bynnag maent yn ei gael yn ôl oddi wrth y swyddogaeth 638 00:50:48,150 --> 00:50:50,870 Bydd ar ryw adeg bydd angen i gael eu rhyddhau. 639 00:50:50,870 --> 00:50:53,940 >> Gan dybio bod popeth yn iawn ac yn dda yma, 640 00:50:53,940 --> 00:51:02,300 gallwn fynd i lawr i ein cod ac yn disodli pob un o'r rhain llinellau iawn yma 641 00:51:02,300 --> 00:51:05,410 gyda galwadau i'n swyddogaeth node adeiladu. 642 00:51:05,410 --> 00:51:08,170 Gadewch i ni wneud hynny yn gyflym iawn. 643 00:51:08,170 --> 00:51:15,840 Mae'r rhan un nad ydym yn mynd i gymryd lle yn y rhan hon i lawr yma 644 00:51:15,840 --> 00:51:18,520 ar y gwaelod lle yr ydym mewn gwirionedd gwifren i fyny 'r nodau i bwyntio at ei gilydd, 645 00:51:18,520 --> 00:51:21,030 oherwydd na allwn ei wneud yn ein swyddogaeth. 646 00:51:21,030 --> 00:51:37,400 Ond, gadewch i ni wneud gwraidd = build_node (7); nod * tri = build_node (3); 647 00:51:37,400 --> 00:51:47,980 nod * 6 = build_node (6); nod * 9 = build_node (9);. 648 00:51:47,980 --> 00:51:52,590 Ac yn awr, rydym hefyd yn awyddus i ychwanegu nodau ar gyfer - 649 00:51:52,590 --> 00:52:03,530 nod * 5 = build_node (5); nod * 8 = build_node (8); 650 00:52:03,530 --> 00:52:09,760 a beth oedd y nod arall? Gadewch i ni weld yma. Rydym eisiau i hefyd yn ychwanegu 2 - 651 00:52:09,760 --> 00:52:20,280 nod * 2 = build_node (2);. 652 00:52:20,280 --> 00:52:26,850 Iawn. Ar y pwynt hwn, rydym yn gwybod ein bod wedi cael y 7, y 3, 9, a 6 653 00:52:26,850 --> 00:52:30,320 holl gwifredig i fyny yn briodol, ond beth am y 5, 8, a'r 2? 654 00:52:30,320 --> 00:52:33,550 Er mwyn cadw popeth yn y drefn briodol, 655 00:52:33,550 --> 00:52:39,230 gwyddom fod tair plentyn cywir yw 6. 656 00:52:39,230 --> 00:52:40,890 Felly, os ydym yn mynd i ychwanegu y 5, 657 00:52:40,890 --> 00:52:46,670 y 5 hefyd yn perthyn yn yr ochr dde y goeden y mae 3 yw'r gwraidd, 658 00:52:46,670 --> 00:52:50,440 hynny 5 yn perthyn fel y plentyn chwith 6. 659 00:52:50,440 --> 00:52:58,650 Gallwn wneud hyn drwy ddweud, chwech -> left_child = phump; 660 00:52:58,650 --> 00:53:10,790 ac yna yr 8 perthyn fel y plentyn chwith 9, fel naw -> left_child = wyth; 661 00:53:10,790 --> 00:53:22,190 ac yna 2 yw'r plentyn chwith o 3, fel y gallwn wneud hynny i fyny yma - di -> left_child = dau;. 662 00:53:22,190 --> 00:53:27,730 Os nad oeddech yn eithaf dilyn ynghyd â hynny, yr wyf yn awgrymu eich bod yn tynnu allan eich hun. 663 00:53:27,730 --> 00:53:35,660 >> Iawn. Gadewch i ni achub y. Gadewch i ni fynd allan a gwneud yn siŵr ei llunio, 664 00:53:35,660 --> 00:53:40,760 ac yna gallwn ychwanegu yn ein galwadau cynnwys. 665 00:53:40,760 --> 00:53:44,120 Edrych fel popeth yn dal llunio. 666 00:53:44,120 --> 00:53:51,790 Gadewch i ni fynd i mewn ac ychwanegwch mewn rhai yn cynnwys galwadau. 667 00:53:51,790 --> 00:53:59,640 Unwaith eto, yr wyf i'n mynd i wneud ychydig bach o gopi a gludo. 668 00:53:59,640 --> 00:54:15,860 Nawr gadewch i ni chwilio am 5, 8, a 2. Iawn. 669 00:54:15,860 --> 00:54:28,330 Gadewch i ni wneud yn siwr bod hyn i gyd yn edrych yn dda o hyd. Great! Arbed a rhoi'r gorau iddi. 670 00:54:28,330 --> 00:54:33,220 Nawr gadewch i ni wneud, crynhoi, ac yn awr gadewch i ni redeg. 671 00:54:33,220 --> 00:54:37,540 O'r canlyniadau, mae'n edrych fel mae popeth yn gweithio jyst 'n glws ac yn iach. 672 00:54:37,540 --> 00:54:41,780 Great! Felly, nawr rydym wedi cael ein swyddogaeth Yn cynnwys ysgrifenedig. 673 00:54:41,780 --> 00:54:46,160 Gadewch i ni symud ymlaen a dechrau gweithio ar sut i osod nodau i mewn i'r goeden 674 00:54:46,160 --> 00:54:50,000 ers hynny, gan ein bod yn gwneud hynny ar hyn o bryd, nid yw pethau yn iawn 'n bert. 675 00:54:50,000 --> 00:54:52,280 >> Os awn yn ôl at y fanyleb, 676 00:54:52,280 --> 00:55:00,540 mae'n gofyn i ni ysgrifennu swyddogaeth o'r enw mewnosodwch - unwaith eto, dychwelyd bool 677 00:55:00,540 --> 00:55:04,400 O ran a fyddai modd i ni mewn gwirionedd yn gosod y nod i mewn i'r goeden - 678 00:55:04,400 --> 00:55:07,710 ac yna y gwerth i fewnosod y goeden wedi ei bennu fel 679 00:55:07,710 --> 00:55:11,060 y ddadl yn unig at ein swyddogaeth mewnosodwch. 680 00:55:11,060 --> 00:55:18,180 Byddwn yn dychwelyd yn wir pe gallem yn wir mewnosoder y gwerth nod yn cynnwys i mewn i'r goeden, 681 00:55:18,180 --> 00:55:20,930 sy'n golygu ein bod ni, un, roedd digon o gof, 682 00:55:20,930 --> 00:55:24,840 ac yna dau, na nod oedd eisoes yn bodoli yn y goeden ers hynny - 683 00:55:24,840 --> 00:55:32,170 cofiwch, nid ydym yn mynd i feddu ar werthoedd dyblyg yn y goeden, dim ond i wneud pethau syml. 684 00:55:32,170 --> 00:55:35,590 Iawn. Back i'r cod. 685 00:55:35,590 --> 00:55:44,240 Agor i fyny. Zoom mewn ychydig, yna sgroliwch i lawr. 686 00:55:44,240 --> 00:55:47,220 Gadewch i ni roi swyddogaeth nodwch dde uwchben y cynnwys. 687 00:55:47,220 --> 00:55:56,360 Unwaith eto, mae'n mynd i gael ei alw rhowch bool (int gwerth). 688 00:55:56,360 --> 00:56:01,840 Rhowch ofod ychydig yn fwy, ac yna, fel diofyn, 689 00:56:01,840 --> 00:56:08,870 gadewch i ni roi yn gyfnewid ffug ar y diwedd un. 690 00:56:08,870 --> 00:56:22,620 Nawr i lawr ar y gwaelod, gadewch i ni fynd yn ei flaen ac yn hytrach na llaw adeiladu'r nodau 691 00:56:22,620 --> 00:56:27,900 yn y brif ein hunain a gwifrau nhw i fyny i bwyntio at ei gilydd fel yr ydym yn ei wneud, 692 00:56:27,900 --> 00:56:30,600 byddwn yn dibynnu ar ein swyddogaeth nodwch i wneud hynny. 693 00:56:30,600 --> 00:56:35,510 Ni fyddwn yn dibynnu ar ein swyddogaeth nodwch i adeiladu y goeden gyfan o'r dechrau eto, 694 00:56:35,510 --> 00:56:39,970 ond yn hytrach byddwn yn cael gwared ar y llinellau - we'll sylwadau ar y llinellau hyn - 695 00:56:39,970 --> 00:56:43,430 sy'n adeiladu y 5 nodau, 8, a 2. 696 00:56:43,430 --> 00:56:55,740 Ac yn lle hynny, byddwn yn ychwanegu galwadau i'n swyddogaeth rhowch 697 00:56:55,740 --> 00:57:01,280 i wneud yn siŵr bod gweithio mewn gwirionedd. 698 00:57:01,280 --> 00:57:05,840 Yma rydym yn mynd. 699 00:57:05,840 --> 00:57:09,300 >> Nawr rydym wedi gwneud sylwadau ar y llinellau hyn. 700 00:57:09,300 --> 00:57:13,700 Dim ond 7, 3, 9, a 6 yn ein coeden ar y pwynt hwn. 701 00:57:13,700 --> 00:57:18,870 Er mwyn sicrhau bod hyn i gyd yn gweithio, 702 00:57:18,870 --> 00:57:25,050 gallwn ni chwyddo allan, yn gwneud ein coeden ddeuaidd, 703 00:57:25,050 --> 00:57:30,750 rhedeg, a gallwn weld bod cynnwys yn awr yn dweud wrthym ein bod yn hollol gywir - 704 00:57:30,750 --> 00:57:33,110 5, 8, a 2 nad ydynt bellach yn y goeden. 705 00:57:33,110 --> 00:57:37,960 Ewch yn ôl i mewn i'r cod, 706 00:57:37,960 --> 00:57:41,070 a sut rydym yn mynd i fewnosod? 707 00:57:41,070 --> 00:57:46,290 Cofiwch yr hyn a wnaethom pan oeddem yn mewn gwirionedd yn gosod 5, 8, a 2 yn flaenorol. 708 00:57:46,290 --> 00:57:50,100 Rydym yn chwarae y gêm Plinko lle rydym yn dechrau yn y gwraidd, 709 00:57:50,100 --> 00:57:52,780 aeth i lawr yr un goeden gan un gan un 710 00:57:52,780 --> 00:57:54,980 hyd nes i ni ganfod y bwlch priodol, 711 00:57:54,980 --> 00:57:57,570 ac yna rydym yn wifrio yn y nod yn y fan a'r lle priodol. 712 00:57:57,570 --> 00:57:59,480 Rydym yn mynd i wneud yr un peth. 713 00:57:59,480 --> 00:58:04,070 Mae hyn yn y bôn fel ysgrifennu y cod a ddefnyddir yn y swyddogaeth yn cynnwys 714 00:58:04,070 --> 00:58:05,910 i ddod o hyd i'r fan lle y dylai'r nod fod, 715 00:58:05,910 --> 00:58:10,560 ac yna rydym yn jyst yn mynd i fewnosod y nod iawn yno. 716 00:58:10,560 --> 00:58:17,000 Gadewch i ni ddechrau gwneud hynny. 717 00:58:17,000 --> 00:58:24,200 >> Felly mae gennym nod * cyf = gwraidd; rydym yn jyst yn mynd i ddilyn y cod cynnwys 718 00:58:24,200 --> 00:58:26,850 nes i ni ddod o hyd nad yw'n hollol gweithio i ni. 719 00:58:26,850 --> 00:58:32,390 Rydym yn mynd i fynd drwy'r coed, er nad yw'r elfen bresennol yn null, 720 00:58:32,390 --> 00:58:45,280 ac os ydym yn dod o hyd i werth y cyf yn cyfateb i werth ein bod yn ceisio i fewnosod - 721 00:58:45,280 --> 00:58:49,600 yn dda, mae hyn yn un o'r achosion lle na allem mewn gwirionedd mewnosoder y nod 722 00:58:49,600 --> 00:58:52,730 i mewn i'r goeden oherwydd mae hyn yn golygu bod gennym werth dyblyg. 723 00:58:52,730 --> 00:58:59,010 Yma rydym yn wir yn mynd i ddychwelyd ffug. 724 00:58:59,010 --> 00:59:08,440 Arall yn awr, os cyf gwerth yn llai na gwerth, 725 00:59:08,440 --> 00:59:10,930 yn awr rydym yn gwybod ein bod yn symud i'r dde 726 00:59:10,930 --> 00:59:17,190  oherwydd bod y gwerth yn perthyn yn hanner dde yr goeden cyf. 727 00:59:17,190 --> 00:59:30,110 Fel arall, rydym yn mynd i symud i'r chwith. 728 00:59:30,110 --> 00:59:37,980 Dyna y bôn ein Yn cynnwys gweithredu'n iawn yno. 729 00:59:37,980 --> 00:59:41,820 >> Ar y pwynt hwn, unwaith y byddwn wedi cwblhau hyn dolen tra, 730 00:59:41,820 --> 00:59:47,350 ein pwyntydd cyf yn mynd i fod yn pwyntio i null 731 00:59:47,350 --> 00:59:51,540 os nad yw'r swyddogaeth wedi dychwelyd yn barod. 732 00:59:51,540 --> 00:59:58,710 Rydym ni'n ac felly'n cael cyf yn y fan lle rydym am i fewnosod y nod newydd. 733 00:59:58,710 --> 01:00:05,210 Hyn sydd ar ôl i'w wneud yw mewn gwirionedd yn adeiladu'r nod newydd, 734 01:00:05,210 --> 01:00:08,480 y gallwn ei wneud yn eithaf hawdd. 735 01:00:08,480 --> 01:00:14,930 Gallwn ddefnyddio ein super-'n hylaw swyddogaeth nod adeiladu, 736 01:00:14,930 --> 01:00:17,210 ac yn rhywbeth nad ydym yn ei wneud yn gynharach - 737 01:00:17,210 --> 01:00:21,400 rydym yn unig fath o gymryd yn ganiataol ond erbyn hyn byddwn yn gwneud yn unig i wneud yn siŵr - 738 01:00:21,400 --> 01:00:27,130 byddwn yn profi i wneud yn siŵr bod y gwerth ddychwelwyd gan nod newydd oedd mewn gwirionedd yn 739 01:00:27,130 --> 01:00:33,410 Nid null, oherwydd nid ydym am i ddechrau fanteisio ar y cof os yw'n null. 740 01:00:33,410 --> 01:00:39,910 Gallwn brofi i wneud yn siŵr nad yw nod newydd yn hafal i null. 741 01:00:39,910 --> 01:00:42,910 Neu yn hytrach, gallwn ond yn gweld os yw'n mewn gwirionedd yn null, 742 01:00:42,910 --> 01:00:52,120 ac os yw'n null, yna gallwn fynd yn ôl ffug yn gynnar. 743 01:00:52,120 --> 01:00:59,090 >> Ar y pwynt hwn, mae'n rhaid i ni gwifren nod newydd yn ei fan a'r lle priodol yn y goeden. 744 01:00:59,090 --> 01:01:03,510 Os ydym yn edrych yn ôl ar brif a lle ein bod mewn gwirionedd gwifrau mewn gwerthoedd o'r blaen, 745 01:01:03,510 --> 01:01:08,470 rydym yn gweld bod y ffordd yr ydym yn ei wneud pan fyddwn yn awyddus i roi 3 yn y goeden 746 01:01:08,470 --> 01:01:11,750 Roedd rydym yn gweld y plentyn chwith y gwraidd. 747 01:01:11,750 --> 01:01:14,920 Pan fyddwn yn rhoi 9 yn y goeden, roedd rhaid i ni gael mynediad i'r plentyn iawn y gwreiddyn. 748 01:01:14,920 --> 01:01:21,030 Bu'n rhaid i ni gael pwyntydd i'r rhiant er mwyn rhoi gwerth newydd i mewn i'r goeden. 749 01:01:21,030 --> 01:01:24,430 Sgrolio yn ôl i fyny i fewnosod, nid yw hynny'n mynd i weithio yma yn eithaf 750 01:01:24,430 --> 01:01:27,550 oherwydd nad oes gennym pwyntydd rhiant. 751 01:01:27,550 --> 01:01:31,650 Yr hyn yr ydym am fod yn gallu ei wneud yw, ar y pwynt hwn, 752 01:01:31,650 --> 01:01:37,080 gwirio gwerth y rhiant a gweld - wel, diar, 753 01:01:37,080 --> 01:01:41,990 os werth y rhiant yn llai na'r gwerth cyfredol, 754 01:01:41,990 --> 01:01:54,440 yna dylai plentyn y rhiant hawl fydd y nod newydd; 755 01:01:54,440 --> 01:02:07,280 fel arall, dylai'r plentyn y rhiant chwith fod y nod newydd. 756 01:02:07,280 --> 01:02:10,290 Ond, nid ydym yn cael y pwyntydd rhiant yn eithaf eto. 757 01:02:10,290 --> 01:02:15,010 >> Er mwyn ei gael, rydym yn mewn gwirionedd yn mynd i gael ei olrhain wrth i ni fynd drwy'r coed 758 01:02:15,010 --> 01:02:18,440 a dod o hyd y fan a'r lle bo'n briodol yn ein dolen uchod. 759 01:02:18,440 --> 01:02:26,840 Gallwn wneud hynny drwy sgrolio yn ôl i fyny i ben ein swyddogaeth nodwch 760 01:02:26,840 --> 01:02:32,350 ac olrhain newidyn arall pwyntydd enw rhiant. 761 01:02:32,350 --> 01:02:39,340 Rydym yn mynd i osod fod yn gyfartal i null i ddechrau, 762 01:02:39,340 --> 01:02:43,640 ac yna bob tro y byddwn yn mynd drwy'r coed, 763 01:02:43,640 --> 01:02:51,540 ydym yn mynd i osod y pwyntydd rhiant i gyfateb y pwyntydd ar hyn o bryd. 764 01:02:51,540 --> 01:02:59,140 Gosod rhiant cyfartal i cyf. 765 01:02:59,140 --> 01:03:02,260 Fel hyn, bob tro y byddwn yn mynd drwy, 766 01:03:02,260 --> 01:03:05,550 rydym yn mynd i sicrhau fod y pwyntydd ar hyn o bryd yn cael cynyddran 767 01:03:05,550 --> 01:03:12,640 y pwyntydd rhiant yn dilyn hynny - dim ond un lefel yn uwch na'r pwyntydd ar hyn o bryd yn y goeden. 768 01:03:12,640 --> 01:03:17,370 Bod yr holl edrych yn eithaf da. 769 01:03:17,370 --> 01:03:22,380 >> Rwy'n credu yr un peth y byddwn yn dymuno addasu yw hyn yn adeiladu null nod dychwelyd. 770 01:03:22,380 --> 01:03:25,380 Er mwyn cael adeiladu nod i mewn gwirionedd yn llwyddiannus dychwelyd null, 771 01:03:25,380 --> 01:03:31,060 bydd rhaid i ni addasu cod hwnnw, 772 01:03:31,060 --> 01:03:37,270 oherwydd yma nad yw erioed, rydym yn profi i wneud yn siŵr bod malloc dychwelyd pwyntydd dilys. 773 01:03:37,270 --> 01:03:53,390 Felly, os yw (n = NULL!), Yna - 774 01:03:53,390 --> 01:03:55,250 os malloc dychwelyd pwyntydd dilys, yna byddwn yn ei ymgychwyn; 775 01:03:55,250 --> 01:04:02,540 fel arall, byddwn yn unig yn dychwelyd ac a fydd yn y pen draw dychwelyd null i ni. 776 01:04:02,540 --> 01:04:13,050 Nawr pawb yn edrych yn eithaf da. Gadewch i ni wneud yn siŵr bod hyn mewn gwirionedd yn llunio. 777 01:04:13,050 --> 01:04:22,240 Gwnewch goeden ddeuaidd, a oh, rydym wedi cael rhai pethau yn digwydd yma. 778 01:04:22,240 --> 01:04:29,230 >> Rydym wedi cael datganiad ymhlyg o swyddogaeth adeiladu nod. 779 01:04:29,230 --> 01:04:31,950 Unwaith eto, gyda'r rhain yn crynoadyddion, rydym yn mynd i ddechrau ar y brig. 780 01:04:31,950 --> 01:04:36,380 Beth sy'n rhaid hynny'n ei olygu yw fy mod yn galw adeiladu nod cyn i mi wedi datgan mewn gwirionedd. 781 01:04:36,380 --> 01:04:37,730 Gadewch i ni fynd yn ôl at y cod yn gyflym iawn. 782 01:04:37,730 --> 01:04:43,510 Sgroliwch i lawr, ac yn sicr ddigon, fy swyddogaeth mewnosodiad wedi'i ddatgan 783 01:04:43,510 --> 01:04:47,400 uwchben y swyddogaeth nod adeiladu, 784 01:04:47,400 --> 01:04:50,070 ond rwy'n ceisio defnyddio adeiladu nod y tu mewn mewnosoder. 785 01:04:50,070 --> 01:05:06,610 Rydw i'n mynd i fynd i mewn a chopi - ac yna gludwch y ffordd node adeiladu swyddogaeth yma ar y brig. 786 01:05:06,610 --> 01:05:11,750 Y ffordd honno, gobeithio a fydd yn gweithio. Gadewch i ni rhoi'r cynnig arall arni. 787 01:05:11,750 --> 01:05:18,920 Nawr mae'n gyd llunio. Mae popeth yn dda. 788 01:05:18,920 --> 01:05:21,640 >> Ond ar hyn o bryd, nid ydym wedi galw mewn gwirionedd ein swyddogaeth rhowch. 789 01:05:21,640 --> 01:05:26,510 Rydym yn unig yn gwybod ei fod yn llunio, felly gadewch i ni fynd i mewn ac yn rhoi rhai galwadau i mewn 790 01:05:26,510 --> 01:05:28,240 Gadewch i ni wneud hynny yn ein prif swyddogaeth. 791 01:05:28,240 --> 01:05:32,390 Yma, gwnaethom sylwadau ar 5, 8, a 2, 792 01:05:32,390 --> 01:05:36,680 ac wedyn nid ydym yn gwifren i fyny i lawr yma. 793 01:05:36,680 --> 01:05:41,640 Gadewch i ni wneud rhai galwadau i fewnosod, 794 01:05:41,640 --> 01:05:46,440 a gadewch i ni hefyd yn defnyddio yr un math o bethau yr ydym yn eu defnyddio 795 01:05:46,440 --> 01:05:52,810 pan fyddwn yn gwneud y galwadau printf i wneud yn siŵr bod popeth yn cael mewnosod yn gywir. 796 01:05:52,810 --> 01:06:00,550 Rydw i'n mynd i gopïo a gludo, 797 01:06:00,550 --> 01:06:12,450 ac yn hytrach na yn cynnwys ydym yn mynd i wneud mewnosod. 798 01:06:12,450 --> 01:06:30,140 Ac yn hytrach na 6, 10, ac 1, rydym yn mynd i ddefnyddio 5, 8, a 2. 799 01:06:30,140 --> 01:06:37,320 Dylai hyn, gobeithio, rhowch 5, 8, a 2 i mewn i'r goeden. 800 01:06:37,320 --> 01:06:44,050 Llunio. Mae popeth yn dda. Nawr byddwn mewn gwirionedd yn rhedeg ein rhaglen. 801 01:06:44,050 --> 01:06:47,330 >> Popeth dychwelyd ffug. 802 01:06:47,330 --> 01:06:53,830 Felly, nid yw 5, 8, a 2 yn mynd, ac mae'n edrych fel nad oedd Yn cynnwys dod o hyd iddynt chwaith. 803 01:06:53,830 --> 01:06:58,890 Beth sy'n digwydd? Gadewch i ni chwyddo allan. 804 01:06:58,890 --> 01:07:02,160 Y broblem gyntaf oedd hwnnw mewnosodwch yn ymddangos i ddychwelyd ffug, 805 01:07:02,160 --> 01:07:08,750 ac mae'n edrych fel hynny oherwydd i ni adael yn ein galwad yn ôl ffug, 806 01:07:08,750 --> 01:07:14,590 byth, ac rydym yn dychwelyd wir mewn gwirionedd. 807 01:07:14,590 --> 01:07:17,880 Gallwn drefnu hynny. 808 01:07:17,880 --> 01:07:25,290 Yr ail broblem yw, yn awr hyd yn oed os ydym yn ei wneud - arbed hyn, rhoi'r gorau i hyn, 809 01:07:25,290 --> 01:07:34,530 rhedeg wneud eto, wedi ei lunio, ac yna ei redeg - 810 01:07:34,530 --> 01:07:37,670 rydym yn gweld bod rhywbeth arall wedi digwydd yma. 811 01:07:37,670 --> 01:07:42,980 Mae'r 5, 8, a 2 byth yn cael eu canfod o hyd yn y goeden. 812 01:07:42,980 --> 01:07:44,350 Felly, beth sy'n mynd ymlaen? 813 01:07:44,350 --> 01:07:45,700 >> Gadewch i ni edrych ar hyn yn y cod. 814 01:07:45,700 --> 01:07:49,790 Gadewch i ni weld os allwn chyfrif hyn. 815 01:07:49,790 --> 01:07:57,940 Rydym yn dechrau gyda'r rhiant nad yw'n null. 816 01:07:57,940 --> 01:07:59,510 Rydym yn gosod y pwyntydd ar hyn o bryd cyfartal i'r pwyntydd gwraidd, 817 01:07:59,510 --> 01:08:04,280 ac rydym yn mynd i weithio ein ffordd i lawr drwy'r coed. 818 01:08:04,280 --> 01:08:08,650 Os nad yw'r nod ar hyn o bryd yn null, yna rydym yn gwybod ein bod yn gallu symud i lawr ychydig. 819 01:08:08,650 --> 01:08:12,330 Rydym yn gosod ein pwyntydd rhiant i fod yn gyfartal i'r pwyntydd ar hyn o bryd, 820 01:08:12,330 --> 01:08:15,420 edrych ar y gwerth - os yw'r gwerthoedd yr un fath ni ddychwelyd ffug. 821 01:08:15,420 --> 01:08:17,540 Os yw'r gwerthoedd yn llai ydym yn symud i'r dde; 822 01:08:17,540 --> 01:08:20,399 fel arall, rydym yn symud i'r chwith. 823 01:08:20,399 --> 01:08:24,220 Yna, rydym yn adeiladu nod. 'N annhymerus' chwyddo i mewn ychydig bach. 824 01:08:24,220 --> 01:08:31,410 Ac yma, rydyn ni'n mynd i geisio gwifren i fyny 'r gwerthoedd i fod yr un fath. 825 01:08:31,410 --> 01:08:37,250 Beth sy'n digwydd? Gawn ni weld os gall o bosibl Valgrind yn rhoi i ni awgrym. 826 01:08:37,250 --> 01:08:43,910 >> Rwy'n hoffi defnyddio Valgrind dim ond oherwydd Valgrind yn gyflym iawn yn rhedeg 827 01:08:43,910 --> 01:08:46,729 ac yn dweud wrthych os oes unrhyw gamgymeriadau cof. 828 01:08:46,729 --> 01:08:48,300 Pan rydym yn rhedeg Valgrind ar y cod, 829 01:08:48,300 --> 01:08:55,859 fel y gallwch weld hit here--Valgrind./binary_tree--and iawn fynd i mewn. 830 01:08:55,859 --> 01:09:03,640 Byddwch yn gweld nad oedd gennym unrhyw wall cof, felly mae'n edrych fel popeth yn iawn hyd yn hyn. 831 01:09:03,640 --> 01:09:07,529 Mae gennym rai gollwng cof, yr ydym yn gwybod, oherwydd nid ydym yn 832 01:09:07,529 --> 01:09:08,910 digwydd i ryddhau unrhyw un o'n nodau. 833 01:09:08,910 --> 01:09:13,050 Gadewch i ni geisio rhedeg GDB i weld beth sy'n digwydd mewn gwirionedd. 834 01:09:13,050 --> 01:09:20,010 Byddwn yn gwneud gdb. / Binary_tree. Mae'n luchio i fyny jyst ddirwya. 835 01:09:20,010 --> 01:09:23,670 Gadewch i ni osod pwynt torri ar mewnosodiad. 836 01:09:23,670 --> 01:09:28,600 Gadewch i ni redeg. 837 01:09:28,600 --> 01:09:31,200 Mae'n edrych yn debyg byth byddem ni'n ei alw mewn gwirionedd mewnosodiad. 838 01:09:31,200 --> 01:09:39,410 Mae'n edrych fel y broblem yn unig oedd bod pan fyddaf yn newid i lawr yma yn y prif - 839 01:09:39,410 --> 01:09:44,279 pob un o'r galwadau hyn printf gan cynnwys - 840 01:09:44,279 --> 01:09:56,430 Dwi byth yn newid mewn gwirionedd rhain i alw mewnosodiad. 841 01:09:56,430 --> 01:10:01,660 Nawr gadewch i ni roi cynnig arni. Gadewch i ni lunio. 842 01:10:01,660 --> 01:10:09,130 Mae pob edrych yn dda yno. Nawr gadewch i ni geisio rhedeg, gweld beth sy'n digwydd. 843 01:10:09,130 --> 01:10:13,320 Iawn! Mae popeth yn edrych yn eithaf da yno. 844 01:10:13,320 --> 01:10:18,130 >> Y peth olaf i feddwl amdano yw, a oes unrhyw achosion ymyl i daflen yma? 845 01:10:18,130 --> 01:10:23,170 Ac mae'n troi allan bod, yn dda, yr un achos ymyl sydd bob amser yn ddiddorol i feddwl am 846 01:10:23,170 --> 01:10:26,250 yw, beth fydd yn digwydd os bydd eich coeden yn wag ac rydych yn galw hyn yn swyddogaeth nodwch? 847 01:10:26,250 --> 01:10:30,330 A fydd yn gweithio? Wel, gadewch i ni roi cynnig arni. 848 01:10:30,330 --> 01:10:32,110 - Binary_tree c. - 849 01:10:32,110 --> 01:10:35,810 Mae'r ffordd yr ydym yn mynd i brofi hyn, rydym yn mynd i fynd i lawr at ein prif swyddogaeth, 850 01:10:35,810 --> 01:10:41,690 ac yn hytrach na gwifrau hyn nodau i fyny fel hyn, 851 01:10:41,690 --> 01:10:56,730 ni jyst yn mynd i wneud sylwadau ar y peth cyfan, 852 01:10:56,730 --> 01:11:02,620 ac yn hytrach na gwifrau i fyny 'r nodau ein hunain, 853 01:11:02,620 --> 01:11:09,400 gallwn mewn gwirionedd yn unig yn mynd ymlaen a dileu hyn i gyd. 854 01:11:09,400 --> 01:11:17,560 Rydym yn mynd i wneud popeth y mae galwad i fewnosod. 855 01:11:17,560 --> 01:11:49,020 Felly, gadewch i ni wneud - yn hytrach na 5, 8, a 2, rydym yn mynd i fewnosod 7, 3, a 9. 856 01:11:49,020 --> 01:11:58,440 Ac yna byddwn hefyd eisiau i fewnosod 6 ynghyd. 857 01:11:58,440 --> 01:12:05,190 Achub. Roi'r gorau iddi. Gwnewch goeden ddeuaidd. 858 01:12:05,190 --> 01:12:08,540 Mae i gyd yn llunio. 859 01:12:08,540 --> 01:12:10,320 Gall Rydym yn unig ei redeg fel y mae a gweld beth sy'n digwydd, 860 01:12:10,320 --> 01:12:12,770 ond mae hefyd yn mynd i fod yn wirioneddol bwysig i wneud yn siŵr bod 861 01:12:12,770 --> 01:12:14,740 Nid oes gennym unrhyw wallau cof, 862 01:12:14,740 --> 01:12:16,840 gan fod hyn yn un o'n hachosion ymyl ein bod yn gwybod am. 863 01:12:16,840 --> 01:12:20,150 >> Gadewch i ni wneud yn siwr ei fod yn gweithio'n dda o dan Valgrind, 864 01:12:20,150 --> 01:12:28,310 y byddwn yn ei wneud at jyst yn rhedeg Valgrind. / binary_tree. 865 01:12:28,310 --> 01:12:31,110 Mae'n edrych fel rydym yn wir yn cael un camgymeriad o un cyd-destun - 866 01:12:31,110 --> 01:12:33,790 gennym y wall. 867 01:12:33,790 --> 01:12:36,690 Beth ddigwyddodd? 868 01:12:36,690 --> 01:12:41,650 Valgrind mewn gwirionedd yn dweud wrthym lle y mae. 869 01:12:41,650 --> 01:12:43,050 Chwyddo allan ychydig. 870 01:12:43,050 --> 01:12:46,040 Mae'n edrych fel ei fod yn digwydd yn ein swyddogaeth nodwch, 871 01:12:46,040 --> 01:12:53,420 lle mae gennym ddarllen annilys o faint 4 yng mewnosoder, llinell 60. 872 01:12:53,420 --> 01:13:03,590 Gadewch i ni fynd yn ôl a gweld beth sy'n mynd ymlaen yma. 873 01:13:03,590 --> 01:13:05,350 Chwyddo allan 'n sylweddol gyflym. 874 01:13:05,350 --> 01:13:14,230 Rwyf am wneud yn siŵr nad yw'n mynd at ymyl y sgrîn er mwyn i ni weld popeth. 875 01:13:14,230 --> 01:13:18,760 Tynnwch hynny mewn ychydig bach. Iawn. 876 01:13:18,760 --> 01:13:35,030 Sgroliwch i lawr, ac mae'r broblem yn iawn yma. 877 01:13:35,030 --> 01:13:40,120 Beth fydd yn digwydd os ydym yn mynd i lawr ac mae ein nod ar hyn o bryd eisoes yn null, 878 01:13:40,120 --> 01:13:44,010 ein nod rhiant yn null, felly os ydym yn edrych i fyny ar y brig, dde yma - 879 01:13:44,010 --> 01:13:47,340 byth os yw hyn yn dolen tra mewn gwirionedd yn gweithredu 880 01:13:47,340 --> 01:13:52,330 oherwydd bod ein gwerth cyfredol yn null - ein gwreiddiau yn null felly cyf yn null - 881 01:13:52,330 --> 01:13:57,810 byth yna mae ein rhiant yn cael ei osod i ymg neu i werth dilys, 882 01:13:57,810 --> 01:14:00,580 felly, bydd rhiant hefyd yn null. 883 01:14:00,580 --> 01:14:03,700 Mae angen i ni gofio i wirio ar gyfer y 884 01:14:03,700 --> 01:14:08,750 erbyn i ni fynd i lawr yma, ac rydym yn dechrau defnyddio gwerth y rhiant. 885 01:14:08,750 --> 01:14:13,190 Felly, beth sy'n digwydd? Wel, os yw'r rhiant yn null - 886 01:14:13,190 --> 01:14:17,990 os (rhiant == NULL) - yna rydym yn gwybod bod 887 01:14:17,990 --> 01:14:19,530 Ni ddylai unrhyw beth yn y goeden. 888 01:14:19,530 --> 01:14:22,030 Mae'n rhaid i ni fod yn ceisio ei fewnosod yn y gwraidd. 889 01:14:22,030 --> 01:14:32,570 Gallwn wneud hynny drwy osod dim ond y gwreiddyn sy'n hafal i'r nod newydd. 890 01:14:32,570 --> 01:14:40,010 Yna, ar y pwynt hwn, nid ydym mewn gwirionedd eisiau mynd drwy'r pethau eraill. 891 01:14:40,010 --> 01:14:44,780 Yn hytrach, i'r dde yma, y ​​gallwn ei wneud naill ai arall-os-arall, 892 01:14:44,780 --> 01:14:47,610 neu gallem gyfuno popeth i fyny yma mewn arall, 893 01:14:47,610 --> 01:14:56,300 ond yma byddwn yn unig yn defnyddio arall ac yn ei wneud y ffordd honno. 894 01:14:56,300 --> 01:14:59,030 Nawr, rydym yn mynd i brofi i wneud yn siŵr nad yw ein rhiant yn null 895 01:14:59,030 --> 01:15:02,160 cyn hynny mewn gwirionedd yn ceisio mynediad i'w feysydd. 896 01:15:02,160 --> 01:15:05,330 Bydd hyn yn ein helpu i osgoi y wall. 897 01:15:05,330 --> 01:15:14,740 Felly, rydym yn rhoi'r gorau iddi, chwyddo allan, lunio, rhedeg. 898 01:15:14,740 --> 01:15:18,130 >> Dim gwallau, ond mae gennym griw o ollyngiadau cof 899 01:15:18,130 --> 01:15:20,650 oherwydd nad oeddem yn rhyddhau unrhyw un o'n nodau. 900 01:15:20,650 --> 01:15:24,350 Ond, os ydym yn mynd i fyny yma ac rydym yn edrych ar ein allbrint, 901 01:15:24,350 --> 01:15:30,880 rydym yn gweld bod, yn dda, yn edrych fel pob un o'n mewnosod yn dychwelyd yn wir, sydd yn dda. 902 01:15:30,880 --> 01:15:33,050 Mae'r mewnosod i gyd yn wir, 903 01:15:33,050 --> 01:15:36,670 ac yna y galwadau Yn cynnwys priodol hefyd yn wir. 904 01:15:36,670 --> 01:15:41,510 >> Da swydd! Mae'n edrych fel rydym wedi ysgrifennu yn llwyddiannus mewnosodiad. 905 01:15:41,510 --> 01:15:47,430 Dyna'r cyfan sydd gennym ar gyfer yr wythnos hon Set Problem Fanyleb. 906 01:15:47,430 --> 01:15:51,720 Un her hwyl i feddwl amdano yw sut y byddech mewn gwirionedd yn mynd i mewn 907 01:15:51,720 --> 01:15:55,340 ac yn rhydd pob un o'r nodau yn y goeden. 908 01:15:55,340 --> 01:15:58,830 Gallwn wneud hynny mewn nifer o ffyrdd gwahanol, 909 01:15:58,830 --> 01:16:01,930 ond byddaf yn gadael y bydd hyd i chi i arbrofi, 910 01:16:01,930 --> 01:16:06,080 ac fel her hwyl, ceisio gwneud yn siŵr y gallwch wneud yn siŵr 911 01:16:06,080 --> 01:16:09,490 bod yr adroddiad hwn Valgrind yn dychwelyd unrhyw wallau a dim gollyngiadau. 912 01:16:09,490 --> 01:16:12,880 >> Pob lwc ar yr wythnos hon problem Huffman set codio, 913 01:16:12,880 --> 01:16:14,380 ac fe welwn ni chi wythnos nesaf! 914 01:16:14,380 --> 01:16:17,290 [CS50.TV]