[Powered by Google Translate] [Alt 7: More Compordach] [Rob Bowden] [Ollscoil Harvard] [Is é seo an CS50] [CS50.TV] Gach ceart. Mar sin, mar a dúirt mé i mo ríomhphost, tá sé seo dul chun bheith ina alt dénártha-crann-dian. Ach nach bhfuil go leor ceisteanna. Mar sin, táimid ag dul chun iarracht a dhéanamh agus a tharraingt gach ceist amach agus dul isteach go mion painful de na bealaí is fearr chun rudaí a dhéanamh. Mar sin, ar dheis ag an tús, théann muid trí líníochtaí sampla de chrainn dhénártha agus rudaí. Mar sin anseo, "Cuimhnigh go bhfuil crann dhénártha nóid cosúil leis na cinn de liosta nasctha, ach amháin in ionad amháin pointeoir, tá dhá: ceann amháin do na láimhe clé 'leanbh' agus ceann do na 'leanbh' ceart. " Mar sin, le crann dhénártha é díreach cosúil le liosta nasctha, ach amháin an struct ag dul a bheith dhá threo. Níl crainn trinary, atá ag dul a bheith trí leideanna, tá N-bhunu crainn, a bhfuil ach pointeoir cineálach go bhfuil tú ansin a malloc a bheith mór go leor chun a bheith leideanna go leor chun na páistí go léir is féidir. Mar sin, a tharlaíonn crann dhénártha ach go bhfuil roinnt leanúnach ar bheirt. Más mian leat, is féidir leat a thabhairt ar liosta nasctha mar chrann unary, ach ní dóigh liom go bhfuil duine ar bith glaonna go. "Tarraing léaráid boscaí-agus-saigheada de nód crann dhénártha ina bhfuil líon is fearr leat Nate, ar 7, i gcás ina bhfuil gach leanbh pointeoir null. " Modh sin, iPad. Tá sé seo ag dul a bheith deas simplí. Táimid ag dul ach go bhfuil nód, beidh mé a tharraingt air mar cearnach. Agus beidh mé a tharraingt ar na luachanna i anseo. Mar sin, beidh an luach a théann i anseo, agus ansin síos anseo beidh orainn an pointeoir chlé ar thaobh na láimhe clé agus an pointeoir ceart ar dheis. Agus tá sé an-oiread sin coinbhinsiún a ghlaoch air chlé agus ar dheis, ainmneacha pointeoir. Tá an dá ag dul a bheith ar neamhní. Beidh sin a bheith díreach faoin margadh saothair, agus go mbeidh a bheith díreach null. Maith go leor. Mar sin, ar ais go dtí anseo. "Le liosta nasctha, bhí againn ach a stóráil ar pointeoir leis an nód chéad uair sa liosta in ord chun cuimhneamh ar an liosta iomlán nasctha, nó ar an liosta iomlán. Mar an gcéanna, le crainn, ní mór dúinn ach chun a stóráil ar pointeoir ar nód amháin chun cuimhneamh ar an crann ar fad. Is é seo an nód calle an 'root' an chrainn. Tógáil ar do léaráid ó roimh nó ceann nua a tharraingt den sórt sin go bhfuil tú léiriú boscaí-agus-saigheada de chrann dénártha leis an luach 7, ansin 3 i thaobh na láimhe clé, ansin 9 ar an gceart, agus ansin 6 maidir le ceart an 3. " A ligean ar féach an féidir liom cuimhneamh ar fad i mo cheann. Mar sin, tá sé seo ag dul a bheith ar ár fréamhacha suas anseo. Beidh muid go bhfuil roinnt pointeoir áit éigin, rud éigin go beidh orainn glaoch fréimhe, agus tá sé dírithe an Guy. Anois, a dhéanamh nód nua, cad a bhfuil againn, 3 ar chlé? Mar sin, nód nua le 3, agus pointí sé ar dtús null. Feicfidh mé a chur díreach N. Anois, ba mhaith linn a dhéanamh a théann ar an taobh clé de 7. Mar sin, táimid seo a athrú pointeoir a chur in iúl anois ar an Guy. Agus a dhéanann muid mar an gcéanna. Tá muid ag iarraidh 9 thar anseo a deir dtús ach null. Táimid ag dul leis an pointeoir, pointe a athrú go 9, agus anois ba mhaith linn a 6 a chur leis an gceart 3. Mar sin, dul ar é a - a dhéanamh ar 6. Agus beidh go Guy pointe ann. Maith go leor. Mar sin, sin uile iarrann sé ar ár gcumas sin a dhéanamh. Anois, a ligean ar dul thar roinnt téarmaíocht. Labhair muid cheana féin faoi conas a bhfuil an fhréamh an crann an nód barr-is mó sa chrann. An ceann ina bhfuil 7. An nóid ag bun an chrainn a dtugtar na duilleoga. Tá aon nód a bhfuil díreach faoin margadh saothair mar chuid leanaí duilleog. Mar sin, is féidir, má éiríonn lenár n crann dhénártha ach nód amháin, go bhfuil crann duille, agus go bhfuil sé. "Is é an 'airde' an chrainn ar líon na leannlusanna a bhfuil tú a dhéanamh a fháil ó bharr go duilleog. " Beidh muid a fháil i, sa dara, an difríocht idir crainn dénártha cothrom agus neamhchothrom, ach do anois, an airde iomlán an crann Ba mhaith liom a rá go bhfuil 3, cé go má tá tú ag comhaireamh an líon na n-leannlusanna caithfidh tú a dhéanamh d'fhonn a fháil go 9, ansin tá sé i ndáiríre ach ar airde de 2. Ceart anois is é seo an crann dhénártha neamhchothrom, ach beidh phléamar cothrom nuair a fhaigheann sé a bheith iomchuí. Mar sin, anois is féidir linn labhairt faoi nóid i gcrann i dtéarmaí i gcomparáid leis an nóid eile sa chrann. Mar sin anois táimid tar éis tuismitheoirí, leanaí, deartháireacha, sinsear, agus sliocht. Tá siad ciall go leor coitianta, cad a chiallaíonn siad. Má iarraimid - tá sé do thuismitheoirí. Mar sin, cad é an tuismitheoir de 3? [Mic Léinn] 7. >> Yeah. Is é an tuismitheoir ag dul ach a bheith cad pointí a thabhairt duit. Ansin, cad iad na páistí de 7? [Mic Léinn] 3 agus 9. >> Yeah. Fógra go ciallaíonn "leanaí" literally leanaí, Ní bheadh ​​sin 6 i bhfeidhm, mar tá sé cosúil le grandchild. Ach ansin má táimid sliocht dul, mar sin cad iad na sliocht 7? [Mic Léinn] 3, 6 agus 9. >> Yeah. An sliocht an nód fréimhe ag dul a bheith gach rud i an crann, ach amháin b'fhéidir an nód fréimhe féin, más rud é nach bhfuil tú ag iarraidh a bhreithniú go shliocht. Agus ar deireadh, sinsear, mar sin tá sé an treo eile. Mar sin, cad iad na sinsear de 6? [Mic Léinn] 3 agus 7. >> Yeah. Ní 9 san áireamh. Tá sé díreach ar ais lineage díreach leis an fhréamh ag dul a bheith do sinsear. "Deirimid go bhfuil crann dénártha 'ordaigh' má do gach nód sa gcrann, gach ceann dá shliocht ar chlé ag luachanna níos lú agus tá gach ceann de na cinn ar dheis luachanna níos mó. Mar shampla, tá an crann thuas d'ordaigh ach nach bhfuil sé an socrú ach is féidir ordú. " Sula muid a fháil leis sin, Tá crann dhénártha ordaigh ar a dtugtar freisin mar chrann cuardaigh dénártha. Anseo táimid ag a tharlóidh a bheith ag glaoch sé crann dhénártha de réir, ach ní chuala mé ar a dtugtar sé crann dhénártha ordaithe roimh, agus ar tráth na gceist go bhfuil muid i bhfad níos mó seans ann a chur crann cuardaigh dénártha. Tá siad ar cheann agus mar an gcéanna, agus tá sé tábhachtach aithníonn tú an t-idirdhealú idir crann dhénártha agus crann cuardaigh dénártha. Is éard is crann dhénártha ach crann a dhíríonn ar dhá rud. Pointí gach nód dtí dhá rud. Níl aon réasúnaíocht faoi na luachanna atá pointí sé le. Mar sin, is maith os cionn anseo, ós rud é tá sé ina crann cuardaigh dénártha, tá a fhios againn go má théann muid fágtha de 7, ansin gach ceann de na luachanna gur féidir linn a bhaint amach, b'fhéidir, ag dul ar chlé de 7 a bheith níos lú ná 7. Fógra go bhfuil na luachanna níos lú ná 7 3 agus 6. Glacfar iad ar fad ar an taobh clé de 7. Má théann muid leis an gceart 7, tá gach rud a bheith níos mó ná 7, mar sin tá 9 leis an gceart 7, mar sin tá muid go maith. Ní hé seo an cás le haghaidh crann dhénártha, le haghaidh crann dénártha rialta féidir linn a bheith díreach 3 ag an mbarr, 7 an taobh clé, 9 an taobh clé den 7; níl aon ordú luachanna ar bith. Anois, ní bheidh muid a dhéanamh i ndáiríre seo mar tá sé tedious agus gan ghá, ach "iarracht a tharraingt mar a lán crainn ordaíodh agus is féidir leat smaoineamh ar ag baint úsáide as na 7 uimhreacha, 3, 9, agus 6. Cé mhéad socruithe ar leith ann? Cad é an airde gach ceann? " Beidh muid cúpla, ach tá an príomh-smaoineamh, tá sé seo ar aon bhealach léiriú uathúil de chrann dénártha ina bhfuil na luachanna seo. Gach gá dúinn go bhfuil roinnt crann dénártha ina bhfuil 7, 3, 6 agus 9. Bheadh ​​Ceann eile is féidir bailí é an fhréamh 3, téigh go dtí an taobh clé agus tá sé 6, téigh go dtí an taobh clé agus tá sé 7, téigh go dtí an taobh clé agus tá sé 9. Is é sin le crann cuardaigh breá bailí dénártha. Níl sé an-cabhrach, mar tá sé díreach cosúil le liosta nasctha agus go bhfuil gach ceann de na leideanna ach null. Ach tá sé crann bailí. Yeah? [Mac Léinn] Ná na luachanna a bheith níos mó ar an gceart? Nó is é seo -? >> Tá na gceist agam dul ar an bhealach eile. Níl freisin - yeah, a ligean ar athrú go. 9, 7, 6, 3. Ghabháil an Chéasta. Tá sé fós le déanamh ar a bhfuil cuardach crann dénártha ceaptha a dhéanamh. Mar sin, tá gach rud ar an taobh clé a bheith níos lú ná aon nód ar leith. D'fhéadfadh muid a bhogadh go díreach, a rá, an 6 agus é a chur anseo. No, ní féidir linn. Cén fáth a bhfuil mé a choinneáil á dhéanamh sin? A ligean ar a dhéanamh - anseo tá 6, anseo 7, 6 pointí le 3. Tá sé seo fós le crann cuardaigh bailí dénártha. Cad é atá cearr más rud é go I - a ligean ar féach an féidir liom teacht suas le socrú. Yeah, maith go leor. Mar sin, cad atá cearr leis an crann? Buille faoi thuairim mé Tá mé tugtha cheana féin duit leid go bhfuil rud éigin cearr leis. Cén fáth a bhfuil mé a choinneáil á dhéanamh sin? Maith go leor. Breathnaíonn sé seo réasúnta. Má táimid ar gach nód, cosúil le 7, agus ansin ar an taobh clé de 7 3. Mar sin, ní mór dúinn 3, is é an rud do cheart 3 6. Agus má fhéachann tú ar 6 is é an rud do cheart 6 a 9. Mar sin, cén fáth nach bhfuil an crann cuardaigh bailí dénártha? [Mic Léinn] 9 tá sé fós ar an taobh clé de 7. >> Yeah. Caithfidh sé a bheith fíor go bhfuil gach luachanna is féidir leat teacht, b'fhéidir, ag dul go dtí an taobh clé den 7 níos lú ná 7. Má théann muid fágtha de 7, a fháil againn go dtí 3 agus is féidir linn a fháil fós go 6, is féidir linn a fháil go fóill go dtí 9, ach a bheith imithe níos lú ná 7, Níor chóir dúinn a bheith in ann a fháil ar roinnt go bhfuil níos mó ná 7. Mar sin, nach bhfuil an crann cuardaigh bailí dénártha. Mo dheartháir a bhí i ndáiríre ceist agallamh go raibh go bunúsach seo, cód ach suas rud éigin a bhailíochtú cibé an bhfuil crann crann cuardaigh dénártha, agus mar sin bhí an chéad rud a rinne sé ach seiceáil a fheiceáil má tá an chlé agus ar dheis ceart, agus abair leo ansin síos ann. Ach ní féidir leat ach é sin a dhéanamh; bhfuil tú súil a choinneáil ar ar an bhfíric go bhfuil anois tá mé imithe fágtha de 7, Ní mór gach rud sa subtree a bheith níos lú ná 7. Ní mór an algartam ceart súil a choinneáil ar de na teorainneacha gur féidir na luachanna titim b'fhéidir isteach Ní bheidh muid ag dul tríd gach ceann acu. Tá ndáil arís deas, cé nach mór dúinn gotten do na, nó ní bheidh muid a fháil dóibh siúd, shainiú cé mhéad tá i ndáiríre. Mar sin, tá 14 acu. An smaoineamh ar conas a dhéanfaí leat é a dhéanamh go bhfuil go matamaiticiúil cosúil le, Is féidir leat a roghnú aon cheann amháin a bheith ar an nód fréimhe, agus ansin más rud é roghnaigh mé 7 a bheith ar an nód fréimhe, ansin tá, abair, roinnt uimhreacha is féidir a théann a bheith ar mo nód chlé, agus tá roinnt uimhreacha is féidir a bheith ar mo nód ceart, ach má tá mé n líon iomlán, ansin an méid is féidir a théann ar an taobh clé móide go bhfuil an méid is féidir a théann leis an gceart n - 1. Mar sin, ar an líon atá fágtha, tá siad a bheith in ann dul go dtí an taobh clé nó ceart. Dealraíonn sé deacair go má chuir mé chéad 3 ansin tá gach rud chun dul go dtí an taobh clé, ach má chuir mé 7, ansin is féidir roinnt rudaí a théann ar chlé an agus is féidir roinnt rudaí dul go dtí an ceart. Agus ag '3 'an chéad gceist agam gur féidir gach rud a dul go dtí an ceart. Tá sé i ndáiríre, tá tú díreach chun smaoineamh ar é mar atá, Is féidir le cé mhéad rudaí a théann ar an chéad leibhéal eile an chrainn. Agus a thagann sé amach a bheith 14; nó is féidir leat a tharraingt ar fad iad, agus ansin beidh tú a fháil 14. Ag dul ar ais anseo, Is éard is "crainn Ordaíodh dénártha fionnuar mar is féidir linn cuardach a dhéanamh trí iad ar bhealach an-cosúil le cuardach thar eagar curtha in eagar. Chun é sin a dhéanamh, táimid ag tosú ag an fhréamh agus ár mbealach obair síos an crann i dtreo duilleoga, seiceáil gach nód luachanna in aghaidh na luachanna táimid ag cuardach do. Má tá an nód reatha luach níos lú ná an luach táimid ag lorg, a théann tú in aice leis an nód leanbh ceart. Seachas sin, a théann tú chuig an nód leanbh chlé. Ag pointe éigin, beidh tú ceachtar an luach tú ag lorg, nó go mbainfidh tú rith isteach i margadh saothair, Ní léiríonn an luach sa chrann. " Caithfidh mé a ataispeáin an crann a bhí againn roimh; beidh a ghlacadh ar an dara. Ach ba mhaith linn chun breathnú suas an bhfuil 6, 10, agus 1 i gcrann. Mar sin, cad a bhí sé, 7, 9, 3, 6. Maith go leor. Na huimhreacha is mian leat chun breathnú suas, ba mhaith linn chun breathnú suas 6. Conas a dhéanann an obair algartam? Bhuel, ní mór dúinn freisin roinnt pointeoir fréimhe ar ár crann. Agus ba mhaith linn dul go dtí an fhréamh agus a rá, tá an luach is comhionann le luach táimid ag cuardach do? Mar sin, táimid ag lorg 6, agus mar sin nach bhfuil sé cothrom. Mar sin, a choinneáil orainn ag dul, agus anois deirimid, maith go leor, mar sin tá 6 níos lú ná 7. Chiallaíonn sin ba mhaith linn dul ar chlé, nó ar mhaith linn a dul go dtí an ceart? [Mac Léinn] Clé. >> Yeah. Tá sé i bhfad níos éasca, tá gach leat a dhéanamh a tharraingt ar cheann nód is féidir ar an crann agus ansin tú don't - in ionad an iarraidh chun smaoineamh i do cheann, ceart go leor, má tá sé níos lú, is féidir liom dul go dtí an taobh clé nó an ceart dul, díreach ag féachaint ar an bpictiúr seo, tá sé an-soiléir go bhfuil mé chun dul go dtí an taobh clé má tá an nód níos mó ná an luach go bhfuil mé ag lorg. Mar sin, a théann tú ar chlé, anois tá mé ag 3. Ba mhaith liom - 3 níos lú ná an luach Táim ag lorg, a bhfuil 6. Mar sin, táimid ag dul go dtí an ceart, agus anois mé deireadh suas ag 6, a bhfuil an luach Táim ag lorg, mar sin mé ar ais fíor. Is é an luach seo chugainn mé ag dul a chuardach le haghaidh 10. Maith go leor. Mar sin, 10, anois, tá dul chun - ghearradh amach go - ag dul a leanúint ar an fhréamh. Anois, tá 10 ag dul a bheith níos mó ná 7, agus mar sin ba mhaith liom chun breathnú ar dheis. Tá mé ag dul chun teacht thar anseo, tá 10 ag dul a bheith níos mó ná 9, mar sin tá mé ag dul go dtí mhaith chun breathnú ar dheis. Tagaim thar anseo, ach thar anseo anois tá mé ag null. Cad a dhéanfaidh mé má bhuail mé null? [Mac Léinn] ais bréagach? >> Yeah. Ní raibh mé a fháil 10. 1 ag dul a bheith cás beagnach mar an gcéanna, ach tá sé ag dul ach a bheith iompaithe; seachas ag lorg síos ar an taobh deas, tá mé ag dul chun breathnú síos ar an taobh clé. Anois liom go bhfuil linn a fháil iarbhír a cód. Seo an áit - oscailt suas an fearas CS50 agus do bhealach nascleanúint a dhéanamh ann, ach is féidir go díreach leat a dhéanamh freisin sé sa spás. Is dócha is fearr chun é a dhéanamh sa spás, mar is féidir linn oibriú sa spás. "An Chéad beidh orainn a dhíth sainmhíniú cineál nua le haghaidh nód crann dénártha ina bhfuil luachanna slánuimhir. Ag baint úsáide as an boilerplate Rialú an thíos, a chruthú sainmhíniú cineál nua le haghaidh nód i gcrann dénártha. Má tá tú i bhfostú. . . "Blah, blah, blah. Maith go leor. Mar sin a ligean a chur ar an boilerplate anseo, nód struct Rialú an, agus nód. Yeah, maith go leor. Mar sin, cad iad na réimsí táimid ag dul a iarraidh i ár nód? [Mac Léinn] Int agus ansin dhá threo? >> Int luach, dhá threo? Conas is féidir liom scríobh na leideanna? [Mac Léinn] struct. >> Ba chóir dom a súmáil isteach Yeah, mar sin struct nód * chlé, agus struct nód * ceart. Agus cuimhnigh ar an bplé ó am seo caite, a dhéanann an aon chiall, a dhéanann an aon chiall, seo a dhéanann aon chiall. Ní mór duit gach rud ann chun sainmhíniú seo a struct athchúrsach. Maith go leor, ionas go mbeidh ar cad ár crann ag dul chun breathnú cosúil. Má rinne muid crann trinary, ansin d'fhéadfadh nód cuma mhaith b2 b1,, struct nód * b3, áit a bhfuil b, chun craobh - i ndáiríre, tá mé níos mó chuala fhág sé,, lár ceart, ach is cuma cad. Táimid cúram ach thart ar dénártha, agus mar sin ceart, ar chlé. "Dearbhaíonn Anois athróg * domhanda nód chun an fhréamh an crann." Mar sin, ní táimid ag dul a dhéanamh sin. D'fhonn a dhéanamh rudaí a beagán níos deacra agus níos ginearálta, ní bheidh againn athróg nód domhanda. Ina áit sin, i mó beimid go léir a dhearbhú ár rudaí nód, agus ciallaíonn sé sin go thíos, nuair a thosaíonn muid ag rith ár n-Tá feidhm agus ár bhfeidhm isteach, in ionad ár Tá feidhm ag baint úsáide as ach an athróg nód domhanda, táimid ag dul a bheith acu é a ghlacadh mar argóint an crann sin ba mhaith linn é a phróiseáil. Bhí ceaptha Ag an athróg domhanda chun rudaí a dhéanamh níos éasca. Táimid ag dul chun rudaí a dhéanamh níos deacra. Anois a ghlacadh nóiméad nó mar sin go díreach é seo a dhéanamh saghas rud, nuair taobh istigh de phríomh mian leat a chruthú an crann, agus sin uile mian leat a dhéanamh. Bain triail as agus an crann a thógáil i do fheidhm is mó. Maith go leor. Mar sin ní gá duit fiú a bheith tógtha ar an crann ar an mbealach ar fad go fóill. Ach tá duine ar bith rud éigin a raibh mé in ann a tharraingt suas chun a thaispeáint conas a d'fhéadfadh ceann amháin tús a thógáil den sórt sin ag crann? [Mac Léinn] D'iarr duine éigin ar banging, ag iarraidh a fháil amach. [Bowden] Duine ar bith compordach lena n-tógáil crann? [Mac Léinn] Cinnte. Nach bhfuil sé déanta. >> Tá sé go breá. Is féidir linn a chríochnú díreach - OH, an féidir leat é a shábháil? Hooray. Mar sin anseo tá muid - OH, tá mé ghearradh beagán de thalamh. Am súmáilte mé i? Zúmáil isteach, scrollbharra amach. >> Tá mé ceist. >> Yeah? [Mac Léinn] Nuair a bheidh tú a shainiú struct, tá rudaí cosúil le initialized rud ar bith? [Bowden] Uimh >> Maith go leor. Mar sin, bheadh ​​agat a thúsú - [Bowden] Uimh Nuair a bheidh tú a shainiú, nó nuair a dhéanann tú a fhógairt struct, nach bhfuil sé initialized de réir réamhshocraithe; tá sé díreach cosúil má tá tú a dhearbhú ina slánuimhir. Tá sé díreach an rud céanna. Tá sé cosúil le gach ceann dá réimsí ar leith Is féidir a bhfuil luach truflais ann. >> Agus is féidir a shainmhíniú - nó a dhearbhú struct ar bhealach a dhéanann sé thúsú iad? [Bowden] Tá. Mar sin, comhréir initialization aicearra ag dul chun breathnú cosúil le - Níl dhá bhealach is féidir linn é seo a. I mo thuairimse, ba chóir dúinn a chur le chéile é a dhéanamh cinnte go ndéanann clang seo chomh maith. An t-ord na n-argóintí a thagann ar an struct, chuir tú an t-ordú de na hargóintí taobh istigh de na braces gcuach. Mar sin, más mian leat é a thúsú go 9 agus d'fhág sé a bheith ar neamhní agus ansin a bheith ceart faoin margadh saothair, go mbeadh sé 9, Eolas faoin margadh saothair, null. Is é an rogha, agus nach bhfuil an eagarthóir mar seo error, agus a ba mhaith liom a bloc nua, ach tá an rogha rud éigin cosúil le - anseo, beidh mé é a chur ar líne nua. Is féidir leat a rá go sainráite, déan dearmad mé an chomhréir cruinn. Mar sin, is féidir leat aghaidh a thabhairt ar go sainráite iad de réir ainm, agus a rá, . C, nó. Luach = 9,. Chlé = NULLComment. Tá mé ag guessing an gcaithfear iad a camóga. . Ceart = NULLComment, agus mar sin ar an mbealach seo nach bhfuil tú iarbhír a fhios an t-ordú an struct, agus nuair a bhíonn tú ag léamh seo, tá sé i bhfad níos soiléire faoi ​​cad atá ar an luach a bheith initialized go. A tharlaíonn sé seo a bheith ar cheann de na rudaí a - mar sin, den chuid is mó, C + + Is le superset de C. Is féidir leat C cód, é a bhogadh ar aghaidh go dtí C + +, agus ba chóir é a thiomsú. Tá sé seo ar cheann de na rudaí a C + + Ní thacaíonn, mar sin daoine claonadh ní a dhéanamh. Níl a fhios agam más rud é go an chúis amháin daoine claonadh gan é a dhéanamh, ach is gá an cás nuair is gá dom a úsáid a bheith ag obair le C + + agus mar sin ní raibh mé in ann seo a úsáid. Ní Sampla eile de rud éigin go n-oibríonn le C + + Is conas ar ais malloc a "* neamhní," go teicniúil, ach d'fhéadfaí tú a rá ach ruabhric * x cibé malloc =, agus déanfar é a chaitheamh go huathoibríoch * Char. Ní sin a caitheadh ​​uathoibríoch tarlú i C + +. Ní bheadh ​​sin a thiomsú, agus bheadh ​​de dhíth ort go sainráite a rá * ruabhreac, malloc, is cuma cad, chun é a chaitheamh le * Char. Ní Tá a lán rudaí go C agus C + + n-aontaíonn ar, ach tá an dá. Mar sin, beidh muid ag dul leis an chomhréir. Ach fiú amháin más rud é nach raibh muid ag dul leis an error, cad é - d'fhéadfadh a bheith mícheart leis seo? [Mac Léinn] Ní féidir liom gá téigh i sé? >> Yeah. Cuimhnigh go bhfuil an arrow le téigh i intuigthe, agus mar sin nuair a bhíonn muid ag déileáil go díreach le struct, ba mhaith linn a úsáid. a fháil ag taobh istigh réimse an struct. Agus is é an t-am amháin a úsáid againn arrow nuair is mian linn a dhéanamh - go maith, tá arrow ar comhbhrí le - sin an méid a mbeadh sé i gceist má úsáidtear mé arrow. Tá gach modh arrow, téigh i seo, anois tá mé ag struct, agus is féidir liom a fháil ar an réimse. Ceachtar a fháil ar an réimse go díreach nó téigh i agus an réimse a fháil - Buille faoi thuairim mé ba chóir é seo a bheith luach. Ach anseo tá mé ag déileáil le díreach struct a ní, a pointeoir a struct, agus mar sin ní féidir liom a bhaint as an arrow. Ach an saghas rud is féidir linn a dhéanamh do gach nód. Oh mo Dhia. Is é seo an 6, 7, agus 3. Ansin is féidir linn a chur ar bun na craobhacha i ár crann, is féidir linn a bheith 7 - is féidir linn a bheith, a d'fhág Ba chóir go pointe 3. Mar sin, conas is féidir linn a dhéanamh? [Mic léinn, dothuigthe] >> Yeah. An seoladh node3, agus más rud é nach raibh tú seoladh, ansin ní bheadh ​​thiomsú díreach. Ach cuimhnigh go bhfuil na leideanna do na nóid eile. Ba chóir an ceart pointe 9, agus ba chóir 3 pointe maidir leis an gceart go 6. Ceapaim go bhfuil leagtha go léir. Aon tuairimí nó ceisteanna? [Mac Léinn, dothuigthe] Is é an fhréamh ag dul a bheith 7. Is féidir linn a rá ach nód * PTR = nó fhréamh, = & node7. Chun ár gcríoch sin, táimid ag dul a bheith ag déileáil le cuir isteach, mar sin táimid ag dul a iarraidh a scríobh feidhm a chur isteach i an crann dhénártha agus tá sé ag dul isteach dosheachanta malloc chun glaoch a chruthú nód nua don chrann. Mar sin, go bhfuil rudaí ag dul a fháil bréan leis an bhfíric go bhfuil roinnt nóid Faoi láthair tá ar an chruach agus nóid eile ag dul chun deireadh suas ar an gcarn nuair a chur isteach orthu. Tá sé seo go foirfe bailí, ach an chúis amháin tá muid in ann é seo a dhéanamh ar an chruach Is é mar tá sé den sórt sin mar shampla bréige go bhfuil a fhios againn Tá an crann ceaptha le bheith tógtha mar 7, 3, 6, 9. Más rud é nach raibh againn seo, ansin ní ba mhaith linn a malloc sa chéad áit. Mar beidh orainn a fheiceáil le beagán níos déanaí, ba chóir dúinn a bheith malloc'ing. Ceart anois tá sé breá réasúnta a chur ar an chruach, ach ligean ar seo a athrú a chur chun feidhme malloc. Dá bhrí sin tá gach ceann de na ag dul anois a bheith rud éigin cosúil le nód * node9 = malloc (deachúlach (nód)). Agus anois tá muid ag dul a bheith a dhéanamh ar ár sheiceáil. más rud é (node9 == NULLComment) - ní raibh mé ag iarraidh go - ar ais 1, agus ansin is féidir a dhéanamh node9-> againn mar anois tá sé ina pointeoir, luach = 6, node9-> fhág = NULLComment, node9-> ceart = NULLComment, agus táimid ag dul a bheith acu sin a dhéanamh do gach ceann de na nóid. Mar sin, ina ionad sin, a ligean ar é a chur taobh istigh de feidhm ar leith. A ligean ar ghlaoch air nód * build_node, agus tá sé seo beagán cosúil leis an APIs a chuirimid ar fáil le haghaidh Huffman códú. Thabhairt leat, feidhmeanna túsaitheoirí le haghaidh crann agus deconstructor "feidhmeanna" do na crainn agus an céanna d'fhoraoisí. Mar sin anseo táimid ag dul go bhfuil feidhm túsaitheoirí go dtí díreach a thógáil nód dúinn. Agus tá sé ag dul chun breathnú go leor i bhfad díreach mar seo. Agus tá mé ag dul fiú a bheith leisciúil agus ní athrú ar ainm an athróg, cé a dhéanann node9 aon chiall níos mó. Ó, buille faoi thuairim mé luach node9 ar chóir a bheith 6. Anois is féidir linn ar ais node9. Agus anseo ba chóir dúinn ar ais null. Tá ag gach duine ar chomhaontú maidir feidhme sin a thógáil-a-nód? Mar sin, anois is féidir linn glaoch go díreach a thógáil ar aon nód le luach áirithe agus leideanna faoin margadh saothair. Anois is féidir linn glaoch sin, is féidir linn a dhéanamh nód * node9 = build_node (9). Agus a ligean ar a dhéanamh. . . 6, 3, 7, 6, 3, 7. Agus anois ba mhaith linn a chur ar bun na leideanna céanna, ach amháin anois tá gach rud cheana i dtaca le leideanna mar sin a thuilleadh gá an seoladh. Maith go leor. Mar sin, cad é an rud deireanach Ba mhaith liom a dhéanamh? Níl earráid-seiceáil nach bhfuil mé ag déanamh. Cad a dhéanann a thógáil ar ais nód? [Mac Léinn, dothuigthe] >> Yeah. Má theip ar malloc, beidh sé ar ais null. Mar sin, tá mé ag dul a chur lazily sé síos anseo in ionad a dhéanamh mar choinníoll le haghaidh gach. Más rud é (node9 == NULLComment, nó - fiú níos simplí, tá sé seo comhionann le díreach más rud é nach node9. Mar sin, más rud é nach node9, nó nach node6, nó nach node3, nó nach bhfuil node7, ar ais 1. B'fhéidir gur chóir dúinn a phriontáil malloc theip, nó rud éigin. [Mac Léinn] An bhfuil bréagach cothrom le nialasach chomh maith? [Bowden] Tá aon luach náid bréagach. Dá bhrí sin tá null luach nialas. Is Zero luach nialas. Is Bréagach luach nialas. Aon - go leor i bhfad an 2 ach na luachanna atá náid faoin margadh saothair agus nialas, bréagach ach hais mar a shainmhínítear nialas. Baineann sé freisin má dhéanann muid dhearbhú athraitheach domhanda. Má rinne muid go bhfuil fréamh * nód suas anseo, ansin - is é an rud deas faoi athróga domhanda go bhfuil siad i gcónaí ag luach tosaigh. Ní Sin fíor feidhmeanna, conas taobh istigh de anseo, má tá muid, ar nós, * nód nó x nód. Tá aon smaoineamh cad x.value, x.whatever, nó d'fhéadfadh muid a phriontáil agus d'fhéadfadh siad a bheith treallach. Ní Sin fíor na n-athróg domhanda. Fréimhe Mar sin nód nó x nód. De réir réamhshocraithe, gach rud go domhanda, más rud é nach initialized go sainráite le roinnt luach, Tá luach nialais mar a luach. Mar sin anseo, fréamh * nód, ní féidir linn a thúsú go sainráite é a rud ar bith, a fhágann go mbeidh a luach réamhshocraithe a bheith faoin margadh saothair, arb é an luach nialas leideanna. Is é an luach réamhshocraithe x ag dul a chiallaíonn go bhfuil x.value náid, x.left Is faoin margadh saothair, agus x.right tá margadh saothair. Mar sin, ós rud é go bhfuil sé struct, beidh gach ceann de na réimsí an struct luachanna nialais. Ní gá dúinn a úsáid go anseo, cé. Tá [Mac Léinn] An structs éagsúla ná athróga eile, agus na hathróga eile luachanna truflais; is iad seo nialais? [Bowden] luachanna eile freisin. Mar sin, i x, beidh x nialas. Má tá sé ar raon domhanda, tá sé luach tosaigh. >> Maith go leor. [Bowden] Is féidir leis an luach tosaigh thug tú é nó nialas. Sílim go Bíonn cúram de gach ceann de seo. Maith go leor. Mar sin, iarrann an chuid eile den cheist, "Anois, ba mhaith linn a scríobh le feidhm a dtugtar Tá le fréamhshamhail bool Tá luach slánuimhir. " Nach bhfuil muid ag dul a dhéanamh bool Tá luach slánuimhir. Is é ár fhréamhshamhail dul chun breathnú cosúil le bool Tá (luach slánuimhir. Agus ansin táimid ag dul freisin chun pas a fháil sé an crann gur chóir é a sheiceáil a fheiceáil má tá sé an luach sin. Mar sin, nód * crann). Maith go leor. Agus ansin is féidir linn a ghlaoch air le rud éigin cosúil le, b'fhéidir go mbainfidh muid ag iarraidh a printf nó rud éigin. Tá 6, ár root. Ba chóir don ais amháin, nó fíor, cé go bhfuil Ba chóir go 5 fréimhe ar ais bréagach. Mar sin a ghlacadh an dara a chur i bhfeidhm. Is féidir leat é a dhéanamh go iteratively nó go hathchúrsach. Is é an rud deas mar gheall ar an mbealach atá againn rudaí a chur ar bun go lends sé é féin chun ár réiteach athchúrsach i bhfad níos éasca ná mar a bhí ar an mbealach domhanda-athraitheach. Toisc go bhfuil má tá muid ach luach slánuimhir, ansin ní mór dúinn aon bhealach recursing síos subtrees. Ba mhaith linn go mbeadh feidhm cúntóir ar leithligh a recurses síos an subtrees dúinn. Ach ós rud é tá muid athraigh sé a chur ar an crann mar argóint, rud ba chóir a bheith i gcónaí sa chéad áit, anois is féidir linn recurse níos éasca. Mar sin, atriallach nó recursive, beidh muid ag dul thar an dá cheann, ach beidh orainn a fheiceáil go bhfuil deireadh athchúrsach a bheith suas éasca go leor. Maith go leor. An bhfuil aon duine rud éigin is féidir linn obair le? [Mac Léinn] fuair mé atriallach réiteach. >> Ceart go leor, atriallach. Maith go leor, Breathnaíonn an dea-. Mar sin, ba mhaith chun siúl dúinn tríd? [Mac Léinn] Cinnte. Mar sin, leag mé athróg teocht a fháil ar an nód chéad chrann. Agus ansin lúbtha mé díreach tar éis trí cé nach bhfuil teocht null cothrom, mar sin nuair a bhí fós sa crann, buille faoi thuairim mé. Agus má tá an luach is comhionann leis an luach go bhfuil teocht atá dírithe, ansin ar ais go luach. Seachas sin, seiceálann sé má tá sé ar an taobh dheis nó ar an taobh clé. Má tá tú riamh a fháil staid ina níl aon crann níos mó, ansin ar ais é - bealach amach sé an lúb agus tuairisceáin bréagach. [Bowden] Maith go leor. Mar sin, is cosúil go maith. Duine ar bith aon tuairimí ar rud ar bith? Tá mé aon tuairimí ceart ar chor ar bith. Is é an rud amháin is féidir linn é seo a Guy. Ó, tá sé ag dul chun dul ar longish beag. Feicfidh mé a shocrú go bhfuil suas. Maith go leor. Ba chóir gach duine cuimhneamh conas a oibríonn thrínártha. Tharla tráth na gceist curtha cinnte san am atá caite a thabhairt duit feidhm le hoibreoir trínártha, agus a rá, seo a aistriú, rud éigin a dhéanamh nach úsáideann thrínártha. Mar sin, tá sé seo le cás an-choitianta nuair ba mhaith liom a cheapann trínártha a úsáid, i gcás má chruthaíonn roinnt coinníoll athróg rud éigin, eile a leagtar go athróg céanna le rud éigin eile. Sin rud gur féidir go minic a chlaochlú an saghas rud inar leag an athróg seo - nó, go maith, tá sé seo fíor? Ansin seo, eile é seo. [Mac Léinn] Is é an chéad cheann más fíor, ceart? [Bowden] Yeah. Is é an bealach a léigh mé i gcónaí é, is ionann teocht luach níos mó ná luach sealadach, ansin é seo, eile é seo. Tá sé seo tú ceist. An bhfuil níos mó é? Ansin a dhéanamh ar an chéad rud. Eile a dhéanamh ar an dara rud. Mé beagnach i gcónaí - an colon, mé díreach tar éis - i mo cheann, léigh mé mar eile. An bhfuil aon duine a réiteach athchúrsach? Maith go leor. Sé seo ar cheann táimid ag dul a - d'fhéadfadh sé a bheith cheana féin go hiontach, ach táimid ag dul a dhéanamh níos fearr fiú. Tá sé seo i bhfad deas an smaoineamh céanna cruinn. Tá sé díreach, go maith, ar mhaith leat a mhíniú? [Mac Léinn] Cinnte. Mar sin, táimid ag déanamh cinnte nach bhfuil an crann nialasach ar dtús, mar má tá an crann null ansin tá sé ag dul a thabhairt ar ais bréagach toisc nach mór dúinn a fuair é. Agus má tá fós crann, táimid ag dul isteach - táimid seiceáil ar dtús má tá an luach an nód atá ann faoi láthair. Fill ar ais fíor má tá sé, agus más rud é nach recurse againn ar an taobh clé nó ceart. An bhfuil an fhuaim cuí? >> Mm-hmm. (Socrú) Mar sin, fógra go bhfuil sé seo beagnach - struchtúir den chineál céanna an-an réiteach atriallach. Tá sé sin go díreach in ionad recursing, bhí againn lúb tamaill. Agus an cás bonn anseo nuair nach crann null comhionann Bhí na coinníollacha faoinar bhris muid amach as an lúb tamaill. Tá siad an-chosúil. Ach táimid ag dul a dhéanfaidh an taisceadh sin amháin eile. Anois, a dhéanann muid an rud céanna anseo. Fógra táimid ag filleadh ar an rud céanna sa dá de na línte, ach amháin i gcás go bhfuil argóint amháin éagsúla. Mar sin, táimid ag dul a dhéanamh go isteach i thrínártha. Bhuail mé rud éigin rogha, agus rinne sé ina siombail. Maith go leor. Mar sin, táimid ag dul a thabhairt ar ais Tá go. Tá sé seo ag fáil a bheith ar línte éagsúla, go maith, súmáilte i go bhfuil sé. De ghnáth, mar rud stíle, ní dóigh liom go bhfuil go leor daoine a chur ar spás tar éis an arrow, ach buille faoi thuairim mé má tá tú ag teacht, tá sé fíneáil. Má tá luach níos lú ná luach crann, ba mhaith linn a recurse ar chlé crann, eile ba mhaith linn a recurse ar dheis crann. Mar sin, go raibh céim ar cheann de seo a dhéanamh cuma níos lú. Céim dhá cheann de seo a dhéanamh cuma níos lú - is féidir linn seo a scaradh le línte éagsúla. Maith go leor. Tá Céim dhá cheann de na a dhéanamh breathnú sé níos lú anseo, mar sin is ionann luach ar ais luach crann, nó ina bhfuil cibé. Is é seo an rud is tábhachtaí. Níl mé cinnte má dúirt sé go sainráite é sa rang, ach tá sé ar a dtugtar gearr-chuaird meastóireachta. Is é an smaoineamh anseo luach == luach crann. Más rud é go fíor, ansin tá sé seo fíor, agus ba mhaith linn 'nó' go bhfuil cuma cad é thar anseo. Mar sin, gan fiú smaoineamh ar is cuma cad é thar anseo, cad é an abairt ar fad ag dul ar ais? [Mac Léinn] Fíor? >> Yeah, mar gheall ar fíor aon ní, Is or'd nó fíor le rud ar bith gá fíor - or'd. Mar sin, a luaithe is mar a fheicimid luach ar ais luach crann =, táimid ag dul díreach a thabhairt ar ais fíor. Nach bhfuil ag dul fiú a recurse Tá tuilleadh síos ar an líne. Is féidir linn a dhéanfaidh an taisceadh sin amháin eile. Ní crann Tuairisceán null cothrom agus seo ar fad. Rinne sé é feidhm amháin-líne. Tá sé seo freisin, mar shampla de gearr-chuaird meastóireachta. Ach anois tá sé an smaoineamh céanna - in ionad - sin más crann nach faoin margadh saothair cothrom - nó, go maith, má dhéanann crann null cothrom, a bhfuil an cás olc, má bhíonn crann null, tá ansin an chéad choinníoll ag dul a bheith bréagach. Mar sin, bréagach anded le rud ar bith ag dul a bheith cad é? [Mac Léinn] Bréagach. >> Yeah. Is é seo an leath eile den gearr-chuaird meastóireachta, i gcás más rud é nach crann null nach ionann, ansin nach bhfuil muid ag dul chun dul fiú - nó má dhéanann crann null cothrom, ansin nach bhfuil muid ag dul a dhéanamh ar luach == luach crann. Táimid ag dul díreach a thabhairt ar ais láithreach bréagach. Rud atá tábhachtach, ós rud é más rud é nach raibh sé gearr-chuaird a mheas, ansin má dhéanann crann null cothrom, tá an dara coinníoll ag dul chun locht seg, toisc go bhfuil crann-> luach dereferencing null. Mar sin tá go sin. An féidir seo a dhéanamh - athrú aon uair amháin os a chionn. Is é seo an rud an-choitianta freisin, ní a dhéanamh ar an líne amháin leis seo, ach tá sé rud coitianta i coinníollacha nach bhfuil, b'fhéidir ar dheis anseo, ach más rud é (crann! = NULLComment, agus crann-> Luach == luach), cibé rud. Is é seo an riocht an-choitianta, i gcás ina ionad a bheith seo a bhriseadh ina dhá IFS, áit mhaith, is é an nialasach crann? Maith go leor, nach bhfuil sé nialasach, mar sin anois an luach crann cothrom le luach? Déan é seo. Ina áit sin, an coinníoll seo, ní bheidh an seg locht toisc go mbeidh sé briseadh amach má tharlaíonn sé seo a bheith ar neamhní. Bhuel, buille faoi thuairim mé má tá do crann pointeoir go hiomlán neamhbhailí, is féidir seg sé fós locht, ach ní féidir é a locht seg má tá crann null. Má bhí sé faoin margadh saothair, go mbeadh sé briseadh amach roimh dereferenced tú riamh ar an pointeoir sa chéad áit. [Mac Léinn] An bhfuil an mheastóireacht ar a dtugtar leisciúil? Is é [Bowden] meastóireacht leisciúil rud ar leith. Tá meastóireacht leisciúil níos mó cosúil le iarraidh ort le haghaidh luach, iarrann tú a ríomh ar luach, de chineál ar, ach ní gá duit é láithreach. Mar sin, go dtí go dhíth ort i ndáiríre é, nach bhfuil sé a mheas. Ní hé seo go díreach an rud céanna, ach sa pset Huffman, Deir sé go bhfuil muid "lazily" a scríobh. Is é an chúis a dhéanann muid go toisc go bhfuil muid ag buffering iarbhír an scríobh - nach bhfuil muid ag iarraidh a scríobh giotán aonair ag an am, nó bytes aonair ag an am, ba mhaith linn áit a fháil ar smután de bytes. Ansin, nuair atá againn le smután de bytes, ansin beidh orainn a scríobh sé amach. Cé iarrann tú é a scríobh - agus fwrite agus fread a dhéanamh ar an saghas céanna rud. Siad a mhaolánú do léann scríobhann agus. Cé tú ag iarraidh é a scríobh láithreach bonn, ní bheidh is dócha. Agus nach féidir leat a bheith cinnte go bhfuil rudaí ag dul a bheith scríofa go dtí go ghlaonn tú ar hfclose nó is cuma cad é, a deir ansin, ceart go leor, tá mé ag dúnadh mo chomhad, ciallaíonn sé gur mhaith liom a scríobh níos fearr gach rud nach bhfuil mé scríofa go fóill. Tá sé tar éis ní gá gach rud a scríobh amach go dtí go bhfuil tú ag dúnadh an comhad, agus ansin ní mór é a. Mar sin, tá go díreach cad leisciúil - Waits sé go dtí go bhfuil sé le tarlú. Seo - a ghlacadh 51 agus beidh tú dul isteach go mion níos mó, mar gheall ar OCaml agus gach rud i 51, tá gach rud athchúrsáil. Níl aon réiteach atriallach, go bunúsach. Tá gach rud athchúrsáil, agus meastóireacht leisciúil ag dul a bheith tábhachtach do a lán de na cúinsí más rud é, más rud é nach raibh tú a mheas lazily, a bheadh ​​i gceist - Is é an sampla sruthanna, atá mar cheann fada. Go teoiriciúil, is féidir leat smaoineamh ar na uimhreacha aiceanta mar shruth de 1-2-3-4-5-6-7, Tá rudaí sin lazily measúnú fíneáil. Má rá liom Ba mhaith liom an uimhir deichiú, ansin is féidir liom a mheas suas go dtí an uimhir deichiú. Más mian liom an uimhir céadú, ansin is féidir liom a mheas suas go dtí an uimhir céadú. Gan meastóireacht leisciúil, ansin tá sé ag dul chun iarracht a dhéanamh chun meastóireacht a dhéanamh ar gach líon láithreach. Tá tú ag mheas uimhreacha infinitely go leor, agus sin ní hamháin is féidir. Mar sin, tá a lán de na cúinsí ina meastóireacht leisciúil ach fíor-riachtanach chun rudaí a bheith ag obair. Anois, ba mhaith linn a scríobh isteach ina bhfuil isteach ag dul a bheith céanna atá ag athrú ina sainmhíniú. Mar sin, ceart anois tá sé isteach bool (luach slánuimhir). Táimid ag dul leis an athrú go dtí isteach bool (slánuimhir luach, nód * crann). Táimid ag dul i ndáiríre a athrú go arís i beagán, beidh orainn a fheiceáil cén fáth. Agus a ligean ar bogadh build_node, ach le haghaidh an heck de, thuas isteach mar sin nach bhfuil againn a scríobh fhréamhshamhail feidhm. Cé acu leid go bhfuil tú ag dul a bheith ag baint úsáide build_node i isteach. Maith go leor. Tóg nóiméad as sin. I mo thuairimse, shábháil mé an t-athbhreithniú más mian leat a tharraingt ó sin, nó, ar a laghad, rinne mé anois. Theastaigh uaim sos beag chun smaoineamh ar an loighic isteach, más rud é nach féidir leat smaoineamh ar é. Go bunúsach, beidh tú riamh ach a bheith isteach ag duilleoga. Cosúil le, más rud é isteach I 1, ansin tá mé ag dul dosheachanta a bheith isteach 1 - Beidh mé ag athrú go dubh - I'll a chur isteach 1 thar anseo. Nó má isteach mé 4, ba mhaith liom a bheith isteach i 4 thar anseo. Mar sin, is cuma cad a dhéanann tú, agus tú ag dul a bheith isteach ag duilleog. Gach bhfuil tú a dhéanamh ná iterate síos an crann go dtí go bhfaigheann tú an nód Ba chóir go mbeadh go bhfuil an nód tuismitheoir, an nód nua tuismitheoir, agus athrú ansin a pointeoir chlé nó ceart, ag brath ar cé acu tá sé níos mó ná nó níos lú ná an nód atá ann faoi láthair. Athraigh go pointeoir a chur in iúl le do nód nua. Mar sin, abair síos an crann, an pointe duille a dhéanamh leis an nód nua. Chomh maith leis sin smaoineamh ar cén fáth go bhfuil cosc ​​ar an gcineál staid roimh, nuair a tógadh mé an crann dhénártha áit a raibh sé ceart má bhreathnaíonn tú ach ag nód amháin, ach bhí 9 an taobh clé den 7 más rud é athluaigh tú síos go léir ar an mbealach. Mar sin, go bhfuil sé dodhéanta sa chás seo, ós rud é - smaoineamh isteach i thart ar 9 nó rud éigin; ag an nód an-an chéad, Tá mé ag dul a fheiceáil 7 agus tá mé ag dul go díreach chun dul go dtí an ceart. Mar sin, is cuma cad a dhéanann mé, má tá mé isteach ag dul go dtí duille, agus chun duille baint úsáide as an algartam is cuí, tá sé ag dul a bheith dodhéanta dom a 9 isteach ar an taobh clé de 7 mar gheall ar chomh luath agus bhuail mé 7 Tá mé ag dul chun dul go dtí an ceart. An bhfuil aon duine rud éigin a tús a chur leis? [Mac Léinn] is féidir liom. >> Cinnte. [Mac Léinn, dothuigthe] [Mac léinn eile, dothuigthe] [Bowden] tá sé mhór. Maith go leor. Want a mhíniú? [Mac Léinn] Ós rud é a fhios againn go raibh muid ag chur isteach nóid nua ag deireadh an crann, Lúbtha mé tríd an crann iteratively go dtí go bhfuair mé le nód a chuir nialasach. Agus ansin shocraigh mé chun é a chur ceachtar ar an taobh dheis nó ar an taobh clé baint úsáide as an athróg ceart; inis sé dom nuair a chur air. Agus ansin, go bunúsach, rinne mé díreach tar éis go deireanach - an bpointe nód teocht leis an nód nua a bhí sé ag cruthú é, ceachtar ar an taobh clé nó ar an taobh deas, ag brath ar an méid a bhí an luach ceart. Ar deireadh, leag mé an luach nód nua an luach a thástáil. [Bowden] Maith go leor, mar sin liom a fheiceáil aon cheist anseo. Tá sé seo cosúil le 95% de ar an mbealach ann. An cheist amháin go bhfeiceann, go maith, a dhéanann duine ar bith eile a fheiceáil i gceist? Cad é an imthoisc faoina bhriseadh siad amach as an lúb? [Mac Léinn] Má tá teocht null? >> Yeah. Mar sin é an chaoi a bhriseann tú amach as an lúb má tá teocht nialasach. Ach cad a dhéanfaidh mé ar dheis anseo? Teocht téigh I, ina bhfuil dosheachanta faoin margadh saothair. Mar sin, nach bhfuil an rud eile is gá duit a dhéanamh ach súil a choinneáil go dtí go bhfuil teocht nialasach, ba mhaith leat súil a choinneáil ar an tuismitheoir i gcónaí. Ba mhaith linn freisin tuismitheoir * nód, buille faoi thuairim mé féidir linn a choinneáil go bhfuil ag null ar dtús. Tá sé seo ag dul go bhfuil iompar aisteach ar an fhréamh an crann, ach beidh muid a fháil chun go. Má tá luach níos mó ná cibé, ansin teocht ceart teocht. Ach sula dhéanaimid sin, tuismitheoir = teocht. Nó an bhfuil na tuismitheoirí dul i gcónaí a teocht cothrom? An é sin an cás? Mura bhfuil teocht nialasach, ansin tá mé ag dul chun bogadh síos, is cuma cén, ar nód a bhfuil teocht an tuismitheoir. Mar sin, tá tuismitheoir ag dul a bheith sealadach, agus ansin bogadh liom teocht síos. Anois tá teocht nialasach, ach pointí tuismitheoir tuismitheoir an rud is faoin margadh saothair. Mar sin síos anseo, níl mé ag iarraidh a shocrú ceart ionann 1. Mar sin, bhog mé go dtí an ceart, mar sin má dheis = 1, agus buille faoi thuairim mé ba mhaith leat a dhéanamh - má tá tú ag bogadh ar chlé, is mian leat a shocrú ceart cothrom le 0. Nó eile má tá tú ag bogadh riamh leis an gceart. Mar sin ceart = 0. Má tá ceart = 1, anois, ba mhaith linn a dhéanamh ar an tuismitheoir newnode pointeoir ceart, eile ba mhaith linn a dhéanamh ar an tuismitheoir newnode pointeoir chlé. Ceisteanna ar sin? Maith go leor. Mar sin, is é seo an tslí a - go maith, i ndáiríre, in ionad é seo a dhéanamh, súil againn leath leat build_node a úsáid. Agus ansin má bhíonn newnode null, ar ais bréagach. Sin sin. Anois, is é seo cad súil againn tú a dhéanamh. Tá sé seo cad a dhéanann na réitigh foirne. Ní aontaím leis seo mar an bealach is ceart "" de ag dul faoi ach tá sé seo breá breá agus beidh sé ag obair. Rud amháin go bhfuil ceart beag aisteach anois má thosaíonn an crann amach mar faoin margadh saothair, táimid ag dul i gcrann null. Buille faoi thuairim mé braitheann sé ar cé tú shainiú ar an iompar a ritheadh ​​i gcrann null. Ba mhaith liom smaoineamh go má théann tú i gcrann Eolas faoin margadh saothair, ansin tríd an luach isteach i gcrann null Ba chóir go díreach ar ais crann áit a bhfuil an luach amháin go nód amháin. An aontaíonn daoine le sin? D'fhéadfá, dá mba mhaith leat, má éiríonn leat i gcrann null agus is mian leat a chur isteach ar luach isteach é, ar ais bréagach. Tá sé suas chun tú a shainmhíniú go. Chun seo a dhéanamh an chéad rud a dúirt mé agus ansin - go maith, agus tú ag dul go bhfuil deacracht a dhéanamh, mar gheall ar go mbeadh sé níos éasca má bhí againn le pointeoir domhanda leis an rud, ach ní féidir linn, mar sin má tá crann nialasach, níl aon rud is féidir linn a dhéanamh faoi sin. Is féidir linn ar ais ach bréagach. Mar sin, tá mé ag dul isteach a athrú. D'fhéadfadh muid teicniúil a athrú ach an ceart seo anseo, conas a iterating sé thar rudaí, ach tá mé ag dul isteach a athrú a ghlacadh nód ** crann. Leideanna Double. Cad a chiallaíonn sé seo? In ionad déileáil le leideanna chun nóid, Is é an rud Tá mé ag dul a bheith ag ionramháil an pointeoir. Tá mé ag dul a bheith ag ionramháil an pointeoir. Tá mé ag dul a bheith leideanna ionramháil go díreach. Tá ciall ó shin, machnamh a dhéanamh ar síos - go maith, ceart seo anois pointí nialasach. Cad ba mhaith liom a dhéanamh ná a ionramháil an pointeoir a chur in iúl nach nialasach. Ba mhaith liom é a chur in iúl do mo nód nua. Má tá mé a choinneáil ach rian de leideanna le mo threo, ansin ní féidir liom gá súil a choinneáil ar a pointeoir tuismitheoir. Is féidir liom a choinneáil ach rian a fheiceáil má tá an pointeoir dírithe nialasach, agus má tá an pointeoir dírithe nialasach, athrú a chur in iúl leis an nód ba mhaith liom. Agus is féidir liom é a athrú ó tá mé pointeoir chuig an pointeoir. A ligean ar a fheiceáil an ceart seo anois. Is féidir leat a dhéanamh i ndáiríre é go hathchúrsach go héasca go leor. An bhfuil muid ag iarraidh sin a dhéanamh? Sea, a dhéanann muid. A ligean ar é a fheiceáil go hathchúrsach. Gcéad dul síos, cad ár gcás bonn ag dul a bheith? Beagnach i gcónaí ar ár gcás bonn; ach i ndáiríre, tá sé seo de chineál ar tricky. Rudaí chéad chéad, más rud é (crann == NULLComment) Buille faoi thuairim mé táimid ag dul díreach a thabhairt ar ais bréagach. Tá sé seo difriúil ó do null crann a bheith. Is é seo an pointeoir le do pointeoir fréimhe a bheith null rud a chiallaíonn nach do pointeoir fréimhe ann. Mar sin anseo síos, más rud é is féidir liom * nód - a ligean ar athúsáid ach seo. Nód * fhréamh = NULLComment, agus ansin tá mé ag dul isteach a ghlaoite ag déanamh rud éigin cosúil le, isteach 4 i & root. Mar sin, & fréimhe, más rud é fréamh a * nód ansin & root dul chun bheith ina ** nód. Tá sé seo bailí. Sa chás seo, crann, suas anseo, Níl crann Eolas faoin margadh saothair - nó cuir isteach. Anseo. Ní Crann Eolas faoin margadh saothair; * Tá crann nialasach, atá fíneáil mar má tá crann * nialasach, ansin is féidir liom a ionramháil a chur in iúl anois cad ba mhaith liom é a chur in iúl go. Ach má tá crann nialasach, a chiallaíonn go tháinig mé díreach síos anseo agus dúirt null. Ní sin ciall a bhaint as. Ní féidir liom aon rud a dhéanamh leis sin. Má tá crann nialasach, ar ais bréagach. Mar sin, mé go bunúsach cheana féin an méid a dúradh é ár gcás bonn fíor. Agus is é an méid sin ag dul a bheith? [Mac Léinn, dothuigthe] [Bowden] Tá. Mar sin, más rud é (* crann == NULLComment). Baineann sé seo leis an gcás thar anseo i gcás má tá mo pointeoir dearg an pointeoir Tá mé dírithe ar, mar sin cosúil Tá mé dírithe ar an pointeoir, anois tá mé dírithe ar an pointeoir. Anois, tá mé dírithe ar an pointeoir. Mar sin, más rud é mo pointeoir dearg, a bhfuil mo ** nód, Is é riamh - má *, mo pointeoir dearg, riamh faoin margadh saothair, ciallaíonn sé go bhfuil mé ar an gcás ina bhfuil mé ag díriú ar pointeoir go pointí - tá sé seo le pointeoir a bhaineann leis duilleog. Ba mhaith liom seo a athrú pointeoir a chur in iúl do mo nód nua. Tar ar ais thar anseo. Beidh mo newnode a bheith díreach nód * n = build_node (luach) ansin n má n = NULLComment aischuir bréagach. Eile ba mhaith linn a athrú ar a bhfuil an pointeoir dírithe faoi láthair chun a chur in iúl anois ar ár nód nua-thógtha. Is féidir linn a dhéanamh i ndáiríre go anseo. In ionad n rá, deirimid * crann = más rud é * crann. Tá ag gach duine a thuiscint go? Go bhfuil ag déileáil le leideanna chun leideanna, féidir linn a athrú leideanna faoin margadh saothair a chur in iúl chun rudaí a ba mhaith linn iad a chur in iúl go. Sin ár gcás bonn. Anois ár atarlú, nó ar ár athchúrsáil, ag dul a bheith an-chosúil le gach recursions eile tá muid ag déanamh. Táimid ag dul go dtí gur mian luach a chur isteach, agus anois tá mé ag dul trínártha a úsáid arís, ach cad é ár staid ag dul a bheith? Cad a bhfuil sé táimid ag lorg chun a chinneadh cé acu ba mhaith linn dul ar chlé nó ceart? Déanaimis é a dhéanamh i gcéimeanna ar leith. Más rud é (luach <) cad é? [Mac Léinn] an crann ar luach? [Bowden] Mar sin, cuimhnigh go bhfuil mé faoi láthair - [Mic léinn, dothuigthe] [Bowden] Yeah, mar sin ceart anseo, a ligean ar rá go bhfuil an arrow glas Is sampla de cad is crann faoi láthair, tá pointeoir leis an pointeoir. Mar sin, Ciallaíonn sé sin go mé pointeoir le pointeoir go 3. An téigh i sounded faoi dhó maith. Cad a dhéanfaidh mé - conas is féidir liom a dhéanamh? [Mac Léinn] téigh i uair amháin, agus ansin déan arrow sin ar bhealach? [Bowden] Mar sin (* crann) Is é an dereference téigh i uair amháin, -> luach ag dul a thabhairt dom luach na nód go bhfuil mé ag déanamh tagairt go hindíreach. Mar sin, is féidir liom scríobh chomh maith ** sé tree.value más fearr leat sin. Ceachtar oibríonn. Más rud é go bhfuil an cás, ansin ba mhaith liom a ghlaoch isteach le luach. Agus cad é mo nód cothrom le dáta ** ag dul a bheith? Ba mhaith liom dul go dtí an taobh clé, mar sin ** tree.left ag dul a bheith ar mo chlé. Agus ba mhaith liom an pointeoir leis an rud ionas go má chríochnaíonn thaobh na láimhe clé a bheith suas an pointeoir nialasach, Is féidir liom a mhodhnú go pointe go dtí mo nód nua. Agus is féidir an cás eile a bheith an-chosúil. Déanaimis a dhéanamh i ndáiríre go bhfuil mo trínártha ceart anois. Cuir isteach luach más rud é luach <(** crann). Luach. Ansin ba mhaith linn ár ** thabhairt cothrom le dáta ar an taobh clé, eile ba mhaith linn ár ** thabhairt cothrom le dáta leis an gceart. [Mac Léinn] An bhfuil a fháil go bhfuil an pointeoir leis an pointeoir? [Bowden] Cuimhnigh go - Is é ** tree.right le réalta nód. [Mac Léinn, dothuigthe] >> Yeah. ** Tree.right Is mar seo pointeoir nó rud éigin. Mar sin, ag cur le pointeoir leis sin, tugann go dom cad ba mhaith liom an pointeoir leis an Guy. [Mac Léinn] Níorbh fhéidir linn dul arís fáth go bhfuil muid ag baint úsáide as an dá threo? [Bowden] Yeah. Mar sin, - no, is féidir leat, agus go bhfuil réiteach roimh Ba bhealach é a dhéanamh gan déanamh dhá threo. Ní mór duit a bheith in ann a thuiscint ag baint úsáide as dhá threo, agus tá sé seo le réiteach níos glaine. Chomh maith leis sin, faoi deara go bhfuil, cad a tharlaíonn má tá mo chrann - cad a tharlaíonn má bhí mo fréimhe null? Cad a tharlaíonn má dhéanaim an gcás seo ar dheis anseo? Mar sin, nód * fhréamh = NULLComment, cuir isteach 4 i & root. Cad é fréamh ag dul a bheith tar éis é seo? [Mac Léinn, dothuigthe] >> Yeah. Tá luach root ag dul a bheith 4. Tá chlé Root ag dul a bheith ar neamhní, tá ceart fréimhe ag dul a bheith ar neamhní. Sa chás nach raibh muid pas a fhréamh le seoladh, ní raibh muid ábalta a mhodhnú fréimhe. I gcás ina bhfuil an crann - áit a raibh fréamhacha nialasach, raibh againn ach a thabhairt ar ais bréagach. Níl aon rud gur féidir linn a dhéanamh. Ní féidir linn a chur isteach nód isteach i crann folamh. Ach is féidir anois againn; linn a dhéanamh ach crann folamh isteach i gcrann aon-nód. A bhfuil de ghnáth ar an mbealach ag súil go bhfuil sé ceaptha a bheith ag obair. Ina theannta sin, tá sé seo i bhfad níos giorra ná freisin taifead a choinneáil de na tuismitheoirí, agus mar sin tú abair síos go léir ar an mbealach. Anois, tá mé mo mháthair, agus tá mé díreach tar éis mo pointeoir ceart tuismitheoir ar an cuma. Ina áit sin, má rinne muid an iteratively, ba é a bheith an smaoineamh céanna le lúb tamaill. Ach in ionad a bheith chun déileáil le mo pointeoir tuismitheoir, ina ionad sin a bheadh ​​mo pointeoir reatha an rud go bhfuil mé ag athrú go díreach a chur in iúl do mo nód nua. Ní féidir liom déileáil le cibé an tá atá dírithe sé ar an taobh clé. Ní féidir liom déileáil le cibé an tá atá dírithe chuig an ceart. Tá sé díreach is cuma cad é an pointeoir, tá mé ag dul a shocrú a chur in iúl do mo nód nua. Tá ag gach duine a thuiscint conas a oibríonn sé? Más rud é nach cén fáth ar mhaith linn a dhéanamh ar an mbealach seo, ach ar a laghad go bhfuil an obair mar réiteach? [Mac Léinn] Cá bhfuil muid ar ais fíor? [Bowden] Sin is dócha ceart anseo. Má táimid isteach i gceart é, ar ais fíor. Eile, síos anseo táimid ag dul a iarraidh a thabhairt ar ais ar ais isteach is cuma cad. Tá Agus cad speisialta faoi an fheidhm athchúrsach? Tá sé eireaball athchúrsach, mar sin chomh fada agus muid ag chur le chéile le roinnt leas iomlán a bhaint, tabharfaidh sé aitheantas sin agus ní bheidh a fháil thar maoil Stack tú as seo, fiú má tá ár n-crann ar airde de 10,000 nó 10 milliún. [Mac Léinn, dothuigthe] [Bowden] I mo thuairimse, a dhéanann sé sé ag Dash - nó cén leibhéal leas iomlán a bhaint bhfuil gá le haghaidh athchúrsáil eireaball a aithint. I mo thuairimse, aithníonn sé - GCC agus clang chomh maith go bhfuil bríonna éagsúla le haghaidh a n leibhéil leas iomlán a bhaint. Ba mhaith liom a rá go bhfuil sé DashO 2, do cinnte go mbeidh sé aitheantas athchúrsáil eireaball. Ach táimid - d'fhéadfaí tú a thógáil cosúil le mar shampla Fibonocci nó rud éigin. Níl sé éasca a thástáil leis seo, mar tá sé deacair a thógáil crann dénártha go chomh mór. Ach yeah, Sílim go bhfuil sé DashO 2, go má tá tú a thiomsú le DashO 2, beidh sé cuma ar athchúrsáil eireaball agus seirbhíse a uasmhéadú sin amach. A ligean ar dul ar ais chuig - cuir isteach Tá literally an rud deireanach ag teastáil uaidh. A ligean ar dul ar ais chuig an chur isteach thar anseo nuair a táimid ag dul a dhéanamh ar an smaoineamh céanna. Beidh sé a bheith fós ar an locht ar gan a bheith in ann déileáil go hiomlán nuair a bhíonn an fhréamh féin faoin margadh saothair, nó go bhfuil an iontráil seo caite faoin margadh saothair, ach in ionad déileáil le pointeoir tuismitheoir, a ligean ar an loighic chéanna de leideanna a choinneáil maidir le leideanna. Má anseo againn a choinneáil ar ár nód ** rth, agus ní mór dúinn súil a choinneáil ar cheart níos mó, ach nód ** rth = & crann. Agus anois tá ár n-lúb agus ag dul a bheith cé go bhfuil ní rth * null comhionann. Ná ní gá a choinneáil ar na tuismitheoirí níos mó. Ná ní gá súil a choinneáil ar chlé agus ar dheis. Agus beidh mé a ghlaoch air teocht, toisc go bhfuil muid ag baint úsáide as cheana féin teocht. Maith go leor. Mar sin, más rud é (luach> * teocht), ansin & (* teocht) -> ceart eile teocht = & (* teocht) -> ar chlé. Agus anois, ag an bpointe seo, tar éis an lúb agus, Is féidir liom ach seo toisc go b'fhéidir go bhfuil sé níos éasca chun smaoineamh ar iteratively ná go hathchúrsach, ach tar éis an lúb agus, * Tá an teocht an pointeoir ba mhaith linn a athrú. Sula bhí againn tuismitheoir, agus bhíomar ag iarraidh a athrú ar chlé tuismitheoir nó tuismitheoir ceart, ach más mian linn a athrú ceart tuismitheoir, ansin * teocht ceart tuismitheoirí, agus is féidir linn a athrú go díreach leis. Mar sin anseo síos, is féidir linn a dhéanamh * teocht = newnode, agus go bhfuil sé. Mar sin, fógra, ni dhearna muid sa thógáil amach línte cód. D'fhonn súil a choinneáil ar an tuismitheoir i go léir go bhfuil iarracht bhreise. Anseo, má táimid a choinneáil ach rian ar an pointeoir leis an pointeoir, agus fiú má bhíomar ag iarraidh a fháil haitheantas coibhneasta de seo go léir braces chatach anois, dhéanamh breathnú níos giorra. Tá sé seo anois ar an réiteach ceannann céanna, ach níos lú línte cód. Nuair a thosóidh tú ag aithint seo mar réiteach bailí, tá sé chomh maith níos éasca mar gheall ar ná mar, maith go leor, cén fáth a bhfuil mé ag an mbratach ar dheis o? Cad a chiallaíonn? Ó, tá signifying go gach uair a théann mé ceart, is gá dom a shocrú, eile má théann mé fágtha gá dom é a shocrú go nialas. Anseo, ní dóigh liom go bhfuil cúis faoi sin; tá sé ach níos éasca chun machnamh. Ceisteanna? [Mac Léinn, dothuigthe] >> Yeah. Maith go leor, mar sin i an giotán deireanach - Buille faoi thuairim mé go bhfuil feidhm amháin tapaidh agus éasca is féidir linn a dhéanamh, let's - le chéile, buille faoi thuairim mé, déan iarracht agus scríobh bhfuil feidhm nach bhfuil cúram cibé an bhfuil sé crann cuardaigh dénártha. Cuimsíonn sé seo ba chóir feidhm ais fíor más rud é in áit ar bith sa crann dhénártha ginearálta an luach táimid ag lorg. Mar sin a ligean a dhéanamh ar dtús é go hathchúrsach agus ansin beidh muid é a dhéanamh iteratively. Is féidir linn i ndáiríre a dhéanamh go díreach le chéile, toisc go bhfuil sé seo ag dul a bheith i ndáiríre gearr. Cad é mo chás bonn ag dul a bheith? [Mac Léinn, dothuigthe] [Bowden] más rud é sin, (crann == NULLComment), ansin cad é? [Mac Léinn] ais bréagach. [Bowden] Eile, go maith, ní féidir liom gá an duine eile. Bhí Más rud é mo chás bonn eile. Luach [Mac Léinn] Crann Fir? >> Yeah. Mar sin, más rud é (luach crann-> luach ==. Fógra táimid ar ais gan * nód, nód ** s? Ní bheidh Tá gá a úsáid ** nód, ós rud é nach bhfuil muid leideanna a mhodhnú. Táimid ag thrasnaíonn díreach leo. Má tharlaíonn sin, ansin ba mhaith linn a thabhairt ar ais fíor. Eile ba mhaith linn a lean na leanaí. Mar sin, ní féidir linn a réasúnú maidir le cé acu an bhfuil gach rud ar an taobh clé níos lú agus tá gach rud ar dheis níos mó. Mar sin, cad ár staid ag dul a bheith anseo - nó, cad tá muid ag dul a dhéanamh? [Mac Léinn, dothuigthe] >> Yeah. Tuairisceán Tá (luach, crann-> ar chlé) nó go bhfuil (luach, crann-> dheis). Agus sin é. Agus faoi deara go bhfuil roinnt meastóireacht gearr-chuaird, i gcás má tharlaíonn linn chun teacht ar an luach sa crann chlé, againn riamh gá chun breathnú ar an crann ceart. Sin é an fheidhm ar fad. Anois, a ligean é a dhéanamh iteratively, atá ag dul a bheith níos lú deas. Beidh muid a chur ar an tús is gnách ar an rth nód * = crann. Cé go (rth! = NULLComment). Go tapa ag dul a fheiceáil fhadhb. Má rth - amach anseo, má sos againn riamh as seo, ansin tá muid ag rith amach as rudaí chun breathnú ar, ar ais mar sin bréagach. Más rud é (rth-> Luach == luach), ar ais fíor. Mar sin, anois, tá muid in áit - níl a fhios againn cé acu ba mhaith linn dul ar chlé nó ceart. Mar sin, treallach, a ligean ar dul ar chlé díreach. Tá mé á reáchtáil ar ndóigh isteach i gceist nuair a bhí mé tréigthe go hiomlán gach rud - Beidh mé ach seiceáil riamh an taobh clé den chrann. Ní bheidh mé ag seiceáil rud ar bith go bhfuil leanbh ceart rud ar bith. Conas is féidir liom a shocrú seo? [Mac Léinn] Tá tú a choinneáil ar an chlé agus ar dheis i chairn. [Bowden] Yeah. Mar sin a ligean a dhéanamh struct liosta, nód * n, agus ansin nód ** chugainn? I mo thuairimse, go n-oibríonn breá. Is mian linn dul thar na láimhe clé, nó let's - suas anseo. = Struct liosta liosta, beidh sé tús amach ag an liosta seo struct. * Liosta = NULLComment. Mar sin, tá go bhfuil ag dul a bheith ar ár liosta nasctha de subtrees go bhfuil muid ndearna os a chionn. Táimid ag dul a lean ar chlé anois, ach ós rud é is gá dúinn gan dabht teacht ar ais chuig an ceart, Táimid ag dul a choinneáil ar an taobh dheis taobh istigh de ár liosta struct. Ansin, beidh orainn new_list nó struct, struct liosta *, new_list = malloc (deachúlach (liosta)). Tá mé ag dul neamhshuim a dhéanamh de earráid-seiceáil a dhéanamh go, ach ba chóir duit seiceáil a fheiceáil má tá sé null. New_list an nód sé ag dul a chur in iúl - ó, sin an fáth a bhí mé sé suas anseo. Tá sé seo ag dul a chur in iúl ar liosta struct dara. Sin díreach cé nasctha liostaí oibre. Is é seo mar an gcéanna liosta slánuimhir nasctha ach amháin tá muid in áit ach slánuimhir le * nód. Tá sé díreach mar an gcéanna. Mar sin, new_list, luach ár nód new_list, ag dul a bheith rth-> ceart. Tá an luach ár new_list-> Tá seo chugainn ag dul a bheith ar ár liosta bunaidh, agus ansin táimid ag dul a thabhairt cothrom le dáta ar ár liosta a chur in iúl go new_list. Anois, ní mór dúinn de chineál éigin ar bhealach na rudaí ag tarraingt, cosúil le againn trasnú an subtree ar fad ar chlé. Anois, ní mór dúinn rudaí a tharraingt amach é, Is cosúil rth Eolas faoin margadh saothair; nach bhfuil muid ag iarraidh a thabhairt ar ais ach bréagach. Ba mhaith linn a tharraingt anois taobh amuigh ar ár liosta nua. Bealach áisiúil é seo a dhéanamh - go maith, i ndáiríre, níl bealaí éagsúla seo a dhéanamh. Duine ar bith a bhfuil moladh? Nuair ba chóir dom a dhéanamh nó conas ba chóir dom a dhéanamh? Ní mór dúinn ach cúpla nóiméad, ach aon mholtaí agat? In ionad - ar bhealach amháin, in ionad ár riocht oiriúnach agus, cad é nach bhfuil muid ag lorg faoi láthair ag margadh saothair, ina ionad sin táimid ag dul chun leanúint ar aghaidh chun dul go dtí go bhfuil ár liosta féin null. Mar sin, má chríochnaíonn ár liosta suas a bheith faoin margadh saothair, ansin ní mór dúinn a rith amach as rudaí a lorg, chun cuardach a dhéanamh os a chionn. Ach ciallaíonn sé sin go bhfuil an chéad rud ar ár liosta ag dul ach a bheith ar an nód ar dtús. Beidh an rud an-an chéad - táimid a thuilleadh gá a fheiceáil go. Mar sin, liosta-> Beidh a chur ar ár n crann. liosta-> Tá seo chugainn ag dul a bheith ar neamhní. Agus anois cé nach liosta null comhionann. Cur ag dul chun rud éigin a tharraingt ón liosta tú. Dá bhrí sin tá rth ag dul go dtí cothrom liosta-> n. Agus ansin tá liosta ag dul go dtí cothrom liosta-> n, nó liosta-> seo chugainn. Mar sin, is ionann luach rth má luach. Anois is féidir linn a chur dá ár pointeoir ceart agus ár n-pointeoir chlé chomh fada is nach bhfuil siad null. Síos anseo, buille faoi thuairim mé ba chóir dúinn a leithéid a dhéanamh sa chéad áit. Más rud é (rth-> ceart! = NULLComment) ansin tá muid ag dul a chur isteach go nód i ár liosta. Más rud é (rth-> ar chlé), tá sé seo le beagán oibre breise, ach tá sé breá. Más rud é (rth-> chlé! = NULLComment), agus táimid ag dul a chur isteach ar an taobh clé isteach ar ár liosta nasctha, agus ba chóir go mbeadh go bhfuil sé. Táimid iterate - chomh fada agus a bhfuil rud éigin i ár liosta, ní mór dúinn eile nód chun breathnú ar. Mar sin, táimid ag an nód, muid ár liosta chun cinn go dtí an ceann eile. Más rud é go bhfuil nód an luach táimid ag lorg, is féidir linn ar ais fíor. Eile isteach an dá subtrees ár chlé agus ar dheis, chomh fada agus nach mbíonn siad faoin margadh saothair, isteach inár liosta ionas go mbeidh muid ag dul dosheachanta os a gcionn. Mar sin, más rud é nach raibh siad faoin margadh saothair, má chuir ár n-pointeoir fhréamh le dhá rud, ansin ar dtús tharraing muid rud éigin amach ionas chríochnaíonn ár liosta suas a bheith null. Agus ansin chuir muid dhá rud ar ais i, mar sin anois tá ár liosta de mhéid 2. Ansin táimid ag dul a lúb ar ais ar bun agus táimid ag dul díreach a tharraingt, ligean le rá, an pointeoir na láimhe clé den ár n-nód fréimhe. Agus beidh go díreach a choinneáil ag tarlú; beidh muid suas go deireadh looping thar gach rud. Fógra go raibh sé seo i bhfad níos casta sa tuaslagán athchúrsach. Agus dúirt mé amanna éagsúla go bhfuil an réiteach athchúrsach de ghnáth i bhfad níos coitianta leis an atriallach réiteach. Anseo is é seo go díreach cad é an réiteach athchúrsach a dhéanamh. Is é an t-athrú ach amháin go ionad hintuigthe ag baint úsáide as an chairn, an chruach chláir, mar do bhealach a choimeád rian ar cad nóid ní mór duit fós chun cuairt a thabhairt, anois caithfidh tú a úsáid go sainráite liosta nasctha. Sa dá chás tá tú ag súil a choinneáil ar riachtanais an méid nód fós le cuairt. I gcás athchúrsach tá sé ach níos éasca mar gheall ar Stack i bhfeidhm le haghaidh tú mar an chairn chláir. Fógra go bhfuil an liosta nasctha, tá sé chairn. Cibé rud a chuir muid go díreach ar an chruach Is é láithreach cad táimid ag dul a tharraingt amach an chairn chun cuairt a thabhairt chugainn. Táimid amach as an am, ach ceist ar bith? [Mac Léinn, dothuigthe] [Bowden] Yeah. Mar sin, má ní mór dúinn ár liosta nasctha, reatha ag dul a chur in iúl ar an Guy, agus anois tá muid chun cinn go díreach ar ár liosta nasctha chun díriú ar an Guy. Táimid ag thrasnaíonn níos mó ná an liosta nasctha sa líne. Agus ansin buille faoi thuairim mé ba chóir dúinn saor in aisce ar ár liosta nasctha agus rudaí uair amháin sular fhill sé fíor nó bréagach, ní mór dúinn iterate ar ár liosta nasctha agus i gcónaí síos anseo, buille faoi thuairim mé, má táimid rth nach bhfuil ceart comhionann le, cuir é, mar sin anois is mian linn go saor in aisce rth mar, go maith, raibh muid dearmad go hiomlán mar gheall ar an liosta? Yeah. Mar sin, go bhfuil an méid ba mhaith linn a dhéanamh anseo. Cá bhfuil an pointeoir? Cur bhí ansin - ba mhaith linn a liosta struct ionann * 10 liosta eile. Liosta saor in aisce, liosta = teocht. Agus i gcás ina ais linn fíor, a dhéanann muid a iterate níos mó ná an chuid eile ar ár liosta nasctha rudaí freeing. Is é an rud deas mar gheall ar an réiteach athchúrsach rudaí freeing ach ciallaíonn factorings popping as an chairn a tharlóidh ar do shon. Mar sin, tá muid imithe as rud éigin go bhfuil cosúil le 3 línte crua-le-smaointe faoi chód chun rud é go suntasach i bhfad níos mó deacair smaoineamh-faoi líne de chód. Aon níos mó ceisteanna? Gach ceart. Táimid go maith. Slán! [CS50.TV]