[Powered by Google Translate] [பகுதி 7: மேலும் வசதியான]
[ராப் Bowden] [ஹார்வர்ட் பல்கலைக்கழகம்]
[இந்த CS50 ஆகும்] [CS50.TV]
எல்லாம் சரி. அதனால், நான் என் மின்னஞ்சல் கூறினார் போன்ற
இந்த பைனரி மர தீவிர பிரிவு இருக்கும்.
ஆனால் பல கேள்விகள் இல்லை.
நாம் முயற்சி மற்றும் ஒவ்வொரு கேள்விக்கும் அவுட் பெற போகிறோம்
மற்றும் செய்யும் அனைத்து சிறந்த வழிகளில் வலி விவரம் போக.
எனவே சரியான ஆரம்பத்தில், நாம் பைனரி மரங்கள் மற்றும் பொருட்களை மாதிரி வரைபடங்கள் மூலம் செல்ல.
இங்கு, "ஒரு பைனரி மரம் ஒரு இணைக்கப்பட்ட பட்டியலில் போன்ற முனைகள் என்று நினைவில்
இடது 'குழந்தை' ஒரு: பதிலாக ஒரு சுட்டிக்காட்டியின் தவிர இரண்டு உள்ளன
வலது 'குழந்தை' ஒரு. "
, ஒரு இணைக்கப்பட்ட பட்டியலில் போல் ஒரு பைனரி மரம் எனவே
struct தவிர இரண்டு சுட்டிகள் வேண்டும் என்று.
மூன்று சுட்டிகள் நடக்க போகிறது இது trinary மரங்கள், அங்கு
ஒரு பொதுவான சுட்டிக்காட்டி கொண்ட N-ary மரங்கள் உள்ளன
நீங்கள் வேண்டும் போதுமானதாக இருக்கும் malloc வேண்டும் என்று
அனைத்து குழந்தைகள் போதுமான சுட்டிகள்.
எனவே பைனரி மரம் இரண்டு ஒரு நிலையான எண் வேண்டும் நடக்கிறது.
நீங்கள் விரும்பினால், நீங்கள், ஒரு ஒரும மரம் ஒரு இணைக்கப்பட்ட பட்டியலில் கொடுக்க முடியும்
ஆனால் நான் யாரையும் அந்த அழைப்பு நினைக்கவில்லை.
"ஒரு பைனரி மரம் முனை ஒரு பெட்டிகள் மற்றும் அம்புகள் வரைபடம் வரையவும்
ஒவ்வொரு குழந்தை சுட்டிக்காட்டி பூஜ்ய எங்கே நேட் பிடித்த எண், 7,. "கொண்ட
எனவே ஐபாட் முறை.
>> அது மிகவும் நேரடியான இருக்க போகிறது.
நாம் ஒரு முனை போகிறது, நான் ஒரு சதுர அதை வரைய வேண்டும்.
நான் இங்கே உள்ள மதிப்புகள் வரைய வேண்டும்.
எனவே மதிப்பு, இங்கே உள்ள போம்
பின்னர் கீழே இங்கே நாம் இடது இடது சுட்டிக்காட்டி மற்றும் வலது உரிமை சுட்டிக்காட்டி வேண்டும்.
இது இடது, வலது, சுட்டிக்காட்டி பெயர்கள் அழைக்க மாநாடு எனவே அது மிகவும் உள்ளது.
இந்த இரு பூஜ்ய போகிறீர்கள்.
அது வெறும் வெற்று இருக்கும், மற்றும் அது வெறும் வெற்று இருக்கும்.
சரி. எனவே இங்கு செல்ல.
"ஒரு இணைக்கப்பட்ட பட்டியலில் மூலம், நாம் ஒரு சுட்டிக்காட்டி சேமிக்க வேண்டும்
முழு இணைக்கப்பட்ட பட்டியலில், அல்லது முழு பட்டியலை நினைவில் வைக்க பட்டியலில் முதல் முனை வேண்டும்.
இதேபோல், மரங்கள், நாம் மட்டும் சுட்டிக்காட்டி சேமிக்க வேண்டும்
முழு மரம் நினைவில் பொருட்டு ஒரு ஒற்றை முனை வேண்டும்.
இந்த முனை மர 'ரூட்' CALLE உள்ளது.
முன் உங்கள் வரைபடம் மீது கட்டமைக்க அல்லது ஒரு புதிய ஒரு வரைந்து
நீங்கள் ஒரு பைனரி மரம் ஒரு பெட்டிகள் மற்றும் அம்புகள் சித்தரிப்பு என்று போன்ற
இடது பின்னர் 3 மதிப்பு 7,,
3 வலது பின் வலது 9, பின்னர் 6. "
நான் என் தலையில் என்று அனைத்து நினைவில் என்றால் பார்க்கலாம்.
இந்த இங்கே நமது ரூட் வரை போகிறது.
நாம், எங்காவது நாம் ரூட் அழைக்கிறேன் என்று ஏதோ சில சுட்டிக்காட்டி வேண்டும்
இது இந்த நபர் என்று சுட்டி காட்டும்.
இப்போது ஒரு புதிய கணு செய்ய,
நாம் இடது, 3 என்ன இருக்கிறது?
3 ஒரு புதிய கணு எனவே, அது ஆரம்பத்தில் பூஜ்ய சுட்டிக்காட்டியுள்ளது.
நான் என் வைக்கிறேன்
இப்போது நாம் 7 இடது சென்று அந்த செய்ய வேண்டும்.
நாம் இப்போது இந்த பையன் சுட்டி இந்த சுட்டிக்காட்டி மாற்ற.
நாம் அதே. நாம் இங்கு ஒரு 9 வேண்டும்
இது ஆரம்பத்தில் வெறும் வெற்று என்கிறார்.
நாம், 9 இந்த சுட்டிக்காட்டி, புள்ளி மாற்ற போகிறோம்
இப்போது நாங்கள் 3 வலது 6 வைக்க வேண்டும்.
எனவே இது நடக்கிறது - ஒரு 6 செய்யும்.
மற்றும் அந்த பையன் அங்கு மாம்.
சரி. அதனால் தான் அது செய்ய எங்களுக்கு கேட்கும்.
>> இப்போது தான் சில சொற்களை மீது செல்லலாம்.
நாம் ஏற்கனவே மரத்தின் வேர் கிளையில் மேல் மிகவும் முனை எப்படி பேசினார்.
ஒரு 7 கொண்டிருக்கும். மரத்தின் கீழே முனைகள் இலைகள் அழைக்கப்படுகின்றன.
அதன் குழந்தைகள் என வெற்று கொண்ட எந்த முனை இலை.
அது நம் பைனரி மரம் ஒரு ஒற்றை முனை என்றால், முடியும்,
ஒரு மரம் ஒரு இலை, அவ்வளவு தான் என்று.
"மர 'உயரம்' நீங்கள் செய்ய வேண்டும் ஹாப்ஸ் எண்ணிக்கை
மேலே இருந்து ஒரு இலை பெற. "
நாம், ஒரு நொடியில், ஒரு வித்தியாசம் கிடைக்கும்
சமச்சீர் மற்றும் ஏறுமாறான பைனரி மரங்கள் இடையே,
இந்த மரத்தின் ஆனால் இப்போது, ஒட்டு மொத்த உயரம்
நான், 3 என்று இருந்த போதிலும் நீங்கள் ஹாப்ஸ் எண்ணிக்கையை என்றால்
நீங்கள் 9 பெறுவதற்காக செய்ய வேண்டும், அது உண்மையில் 2 மட்டுமே உயரம் தான்.
இப்போது இந்த, சமநிலையற்ற பைனரி மரம்
இது தொடர்பான இருக்கும் வரும்போது ஆனால் நாம் சீரான பற்றி பேசினார்.
எனவே இப்போது நாம் வகையில் ஒரு மரம் முனைகளுக்கிடையே பற்றி பேசலாம்
மரம் மற்ற முனைகளில் தொடர்புடைய.
எனவே இப்போது நாம் பெற்றோர்கள், குழந்தைகள், உறவினர்கள், முன்னோர்கள், மற்றும் மரபினர் வேண்டும்.
அவர்கள் என்ன, அழகான பொதுவான உணர்வு இருக்கும்.
நாம் கேட்டால் - இது பெற்றோர்கள்.
அதனால் 3 பெற்றோர் என்ன?
[மாணவர்கள்] 7. >> சரி. பெற்றோர் உங்களுக்கு சுட்டிக்காட்டினால் என்ன ஆக போகிறது.
பின்னர் 7 குழந்தைகள் என்ன?
[மாணவர்கள்] 3 மற்றும் 9. >> சரி.
"குழந்தைகள்" உண்மையில் குழந்தைகள் என்று பாருங்கள்,
அது ஒரு பேர போல ஏனெனில் 6 எனவே, விண்ணப்பிக்க முடியாது.
நாம் வழித்தோன்றல்கள் சென்றால் ஆனால் பின்னர், அதனால் 7 வம்சாவளிகள் என்ன?
[மாணவர்கள்] 3, 6 மற்றும் 9. >> சரி.
வேர் கணு வம்சாவளிகள், மரம் எல்லாம் இருக்கும்
தவிர ஒருவேளை வேர் கணு தன்னை, நீங்கள் ஒரு சந்ததி கருத்தில் கொள்ள வேண்டும் என்றால்.
இறுதியாக, முன்னோர்கள், அது எதிர் திசையில் தான்.
எனவே 6 முன்னோர்கள் என்ன?
[மாணவர்கள்] 3 மற்றும் 7. >> சரி. 9 சேர்க்கப்படவில்லை.
அது ரூட் நேரடி பரம்பரையில் திரும்பி உள்ளது
உங்கள் முன்னோர்கள் போகிறது.
>> "நாங்கள், ஒரு பைனரி மரம் என்றால் மரம் ஒவ்வொரு முனையின் 'உத்தரவிட்டுள்ளது' என்று சொல்ல
இடது அதன் சந்ததிகள் அனைத்து குறைந்த மதிப்புகள் வேண்டும்
வலது ஒன்றை அனைத்து பெரிய மதிப்புகள் வேண்டும்.
எடுத்துக்காட்டாக, மேலே மரம் உத்தரவிட்டார் ஆனால் அது மட்டுமே சாத்தியம் உத்தரவிட்டார் ஏற்பாடு இல்லை. "
நாம் அது கிடைக்கும், முன்
ஒரு கட்டளையிட்டார் பைனரி மரம் ஒரு பைனரி தேடல் மரம் என்று அறியப்படுகிறது.
இங்கே நாம், அது ஒரு கட்டளையிட்டார் பைனரி மரம் அழைப்பு வேண்டும் நடக்கும்
ஆனால் நான் கேட்டதே இல்லை, அது, ஒரு கட்டளையிட்டார் பைனரி மரம் முன் என்று
ஒரு வினாடி வினா நாம் தேடும் ரும மரத்தை வைத்து அதிக வாய்ப்பு உள்ளது.
அவர்கள் ஒரு மற்றும் அதே, நீங்கள்
அதை நீங்கள் பைனரி மரம் மற்றும் இரும தேடல் மரம் இடையே வேறுபாட்டை கண்டு முக்கியம்.
ஒரு பைனரி மரம் ஒரு மரம் என்று இரண்டு விஷயங்களை புள்ளிகள்.
ஒவ்வொரு முனையும் இரண்டு விஷயங்களை சுட்டி காட்டும்.
அதை சுட்டி காட்டும் என்று மதிப்புகள் பற்றி எந்த காரண உள்ளது.
அது ஒரு பைனரி தேடல் மரம் என்பதால், எனவே, இங்கு போல்
நாம், 7 நாம் சென்றால் விட்டு தெரியும்
நாம் அது அடைய முடியும் என்று மதிப்புகள் அனைத்து
7 விட்டு சென்று 7 விட குறைவாக இருக்க வேண்டும்.
குறைந்த 7 விட அனைத்து மதிப்புகள் 3 மற்றும் 6 என்பதை கவனித்து.
அந்த 7 இடது உள்ளன.
நாம் 7 வலது போனால், எல்லாம், 7 ஐ விட அதிகமாக இருக்க வேண்டும்
எனவே 9 7 உரிமை உள்ளது, எனவே நாம் நல்ல இருக்கும்.
இந்த ஒரு பைனரி மரம் வழக்கு அல்ல
வழக்கமான பைனரி ட்ரீ நாம் தான், இடது மேல், 7 மணிக்கு 3 முடியும்
7 இடது 9; இல்லை தேவையில்லை மதிப்புகள் வரிசைப்படுத்தும் உள்ளது.
இது கடினமான மற்றும் தேவையற்ற ஏனென்றால் இப்போது, நாம் உண்மையில், இதை செய்ய மாட்டேன்
ஆனால் "நீங்கள் நினைக்க முடியும் என பல உத்தரவிட்டார் மரங்கள் பெற முயற்சி
எண்கள் 7, 3, 9 பயன்படுத்தி, மற்றும் 6.
தனிப்பட்ட ஏற்பாடுகள் எவ்வளவு உள்ளன? ஒவ்வொரு உயரம் என்ன? "
>> நாம் ஒரு ஜோடி செய்வேன், ஆனால் முக்கிய யோசனை
இந்த வழி இந்த மதிப்புகள் கொண்ட பைனரி மரத்தின் ஒரு தனிப்பட்ட பிரதிநிதித்துவம் உள்ளது.
சில பைனரி 7 கொண்டிருக்கும் மரம், 3, 6, மற்றும் 9 நாம் தேவை இல்லை.
மற்றொரு சாத்தியமான சரியான ஒன்று, ரூட் 3 இருக்க வேண்டும்
இடது சென்று அதை 6 தான், இடது சென்று அதை 7 தான்,
இடது சென்று அதை 9 தான்.
ஒரு செய்தபின் கச்சிதமாக இரும தேடல் மரம்.
இது ஒரு இணைக்கப்பட்ட பட்டியலில் போல், ஏனெனில் இது, மிகவும் பயனுள்ளதாக இல்லை
இந்த குறிப்புகள் அனைத்தும் வெறும் வெற்று இருக்கும்.
ஆனால் அது ஒரு சரியான மரம். அப்படியா?
[மாணவர்] மதிப்புகள் வலது அதிகமாக இருக்கும் இல்லையா?
அல்லது இது -? >> இந்த நான் வேறு வழி சென்று பொருள்.
மேலும் அங்கு - ஆமாம், அது அந்த மாற வேண்டும்.
9, 7, 6, 3. நல்ல ப.
அது இன்னும் ஒரு பைனரி மரம் தேடல் செய்ய வேண்டும், என்ன நடக்க வேண்டும்.
எனவே இடது எல்லாம் எந்த முனை விட குறைவாக இருக்க வேண்டும்.
நாம் இப்போது, என்ன, இந்த 6 நகர்த்த மற்றும் இங்கே அதை வைத்து முடியும்.
இல்லை, நம்மால் முடியாது. நான் ஏன் என்று செய்து வைப்பது?
செய்வோம் - இங்கு 6, இங்கே 7, 3 முதல் 6 புள்ளிகள் ஆகும்.
இது சரியான பைனரி தேடல் மரம்.
நான் ஒரு ஏற்பாட்டை கொண்டு வர முடியும் என்றால் நாம் பார்ப்போம் - நான் என்ன தவறு.
சரி, சரி. இந்த மரம் மிகவும் என்ன தவறு?
நான் ஏற்கனவே நீங்கள் ஏதோ தவறு இருக்கிறது என்று ஒரு குறிப்பை கொடுத்து நினைக்கிறேன்.
நான் ஏன் என்று செய்து வைப்பது?
சரி. இந்த நியாயமான தெரிகிறது.
நாம் ஒவ்வொரு முனையும் போது, 7 போல், பின்னர் 7 இடது இருக்கும் ஒரு 3.
எனவே 3 வேண்டும், 3 வலது விஷயம் 6.
நீங்கள் 6 பார் என்றால், 6 வலது விஷயம் 9 ஆகும்.
ஏன் இந்த சரியான பைனரி தேடல் மரம் அல்ல?
[மாணவர்கள்] 9 7 இடது உள்ளது. >> சரி.
அதை நீங்கள் ஒருவேளை 7 இடது சென்று அடைய முடியும் அனைத்து மதிப்புகள் 7 விட குறைவாக உண்மை இருக்க வேண்டும்.
நாம் 7 விட்டு சென்றால், நாங்கள் 3 பெற நாம் இன்னும் 6 பெற முடியும்
நாம் இன்னும், 9 பெற, ஆனால் குறைவான 7 சென்று மூலம் செய்யலாம்
நாம் 7 அதிகமாக என்று பல பெற முடியாது வேண்டும்.
எனவே இந்த சரியான பைனரி தேடல் மரம் அல்ல.
>> என் சகோதரர் உண்மையில் ஒரு நேர்காணலில் கேள்வி இருந்தது
என்று பரிசோதிக்கவும் ஏதாவது அடிப்படையில் இந்த, ஒரு குறியீடு இருந்தது
ஒரு மரம் ஒரு பைனரி தேடல் மரம், என்று
அதனால் அவர் முதல் விஷயம் தான் பார்க்க பார்க்க இருந்தது
இடது மற்றும் வலது சரிதான், மற்றும் பிறகு அங்கு கீழே கூறு.
ஆனால் நீங்கள் அப்படி செய்ய முடியாது; நீங்கள் கண்காணிக்க வேண்டும்
நான் 7 விட்டு சென்று விட்டனர் என்று இப்போது அந்த உண்மை,
இந்த உபப்படிநிலையின் எல்லாம் 7 விட குறைவாக இருக்க வேண்டும்.
சரியான வழிமுறை கண்காணிக்க வேண்டும்
மதிப்புகள் சாத்தியமான உள்ளே விழும் என்று எல்லைக்கு
நாம் அனைவரும் செல்ல மாட்டேன்.
ஒரு நல்ல மீண்டும் உறவு இல்லை
நாம் அந்த போகவில்லையா, அல்லது நாம் அந்த முடியாது என்றாலும்,
உண்மையில் அங்கு எவ்வளவு வரையறுக்கும்.
எனவே அவர்கள் 14 உள்ளன.
நீங்கள் அதை எப்படி யோசனை கணித, போல்
நீங்கள், வேர் கணு இருக்கும் எந்த ஒற்றை ஒன்றை தேர்வு செய்யலாம்
பின்னர் நான், வேர் கணு இருக்கும் 7 எடுக்க வேண்டும்
பிறகு என் இடது முனை இருக்க முடியும் என்று சில எண்கள்,, என்ன, உள்ளன
என் வலது முனைக்கு முடியும் என்று சில எண்கள் உள்ளன
ஆனால் நான் மொத்த எண்ணிக்கையில், இடது செல்ல அளவு n என்றால்
பிளஸ் சரியான செல்ல அளவு n - 1.
எனவே மீதமுள்ள எண்கள், அவர்கள் இடது அல்லது வலது அல்லது செல்ல முடியும் வேண்டும்.
அது, நான் முதல் 3 வைத்து இருந்தால் எல்லாம் இடது செல்ல வேண்டும், என்று கடினமாக தெரிகிறது
ஆனால் நான் 7 வைக்க வேண்டும் என்றால், சில விஷயங்களை இடது போக முடியும் மற்றும் சில விஷயங்களை சரி செய்ய முடியும்.
மற்றும் '3 முதல் 'நான் எல்லாவற்றையும் சரி போகலாம் என்று.
இது தான், நீங்கள், அதை பற்றி யோசிக்க வேண்டும்
எப்படி பல விஷயங்கள் மரத்தின் அடுத்த நிலை போகலாம்.
, அல்லது நீங்கள் எல்லோரும் பெற முடியும்; அது 14 இருக்கும் வருகிறது
பிறகு 14 பெறுவீர்கள்.
>> இங்கே திரும்பி சென்று,
நாம் அவர்களை மூலம் தேட முடியும் என்பதால், "ஆணையிட்டார் பைனரி மரங்கள் குளிர்ச்சியான இருக்கும்
ஒரு வரிசைப்படுத்தப்பட்ட வரிசை தேட ஒரு மிகவும் ஒத்த விதத்தில்.
அவ்வாறு செய்ய, நாம் ரூட் துவங்க மற்றும் மரம் கீழே எங்கள் வழி வேலை
இலைகள் நோக்கி, நாம் தேடும் மதிப்புகள் எதிராக ஒவ்வொரு கணு மதிப்பு சரி.
தற்போதைய முனை மதிப்பு மதிப்பு குறைவாக இருந்தால் நாம், தேடுகிறீர்கள்
நீங்கள் முனை உரிமை குழந்தை அடுத்த போக.
இல்லையெனில், நீங்கள் முனை இடது குழந்தை சென்று.
, சில நேரத்தில், நீங்கள் நீங்கள் தேடும் மதிப்பு கண்டுபிடிப்போம், அல்லது நீங்கள் ஒரு வெற்று ஒரு ரன் வேண்டும்
மதிப்பு காட்டும் மரம் இல்லை. "
நான் நாம் முன்னர் மரம் மீண்டும் வரைய வேண்டும்; ஒரு இரண்டாவது எடுக்க வேண்டும்.
ஆனால் நாங்கள் 6, 10, மற்றும் 1 கிளையில் என்பதை பார்க்க வேண்டும்.
அதனால் என்ன, 7, 9, 3, 6. சரி.
நீங்கள் பார்க்க வேண்டும் எண்கள், நாம் 6 பார்க்க வேண்டும்.
இந்த எப்படி வழிமுறை என்ன?
சரி, நாம் நம் மரம் சில ரூட் சுட்டிக்காட்டி இருக்கிறது.
நாம் ரூட் சென்று கூறுவேன், நாம் தேடும் மதிப்பு சமமாக இந்த மதிப்பு?
எனவே 6 தேடுகிறீர்கள், அதை சமமாக இல்லை.
எனவே 6 7 குறைவாக உள்ளது, சரி, நாம் போகும், இப்போது நாம் சொல்ல.
என்று நாம் இடது போக வேண்டும் அர்த்தம், அல்லது நாம் சரியான செல்ல விரும்புகிறீர்கள்?
[மாணவர்] இடது. >> சரி.
இது குறிப்பிடத்தக்க எளிதாகவும், நீங்கள் செய்ய வேண்டியது எல்லாம் மரம் ஒன்று சாத்தியமாகும் முனை வரைந்து
பின்னர் நீங்கள் don't - உங்கள் தலையில் என்று முயற்சி பதிலாக,
சரி, அது குறைவாக இருந்தால், நான், இடது சென்று வலது செல்ல
இந்த படத்தை பார்த்து, அதை நான் இடது போக வேண்டும் என்று மிக தெளிவாக
இந்த முனை நான் தேடிக்கொண்டிருக்கிறேன் என்று மதிப்பு அதிகமாக இருந்தால்.
எனவே இப்போது நான் 3 மணிக்கு தான், இடது சென்று.
நான் வேண்டும் - 3, 6, இது நான் தேடிக்கொண்டிருக்கிறேன் மதிப்பு, குறைவாக உள்ளது.
எனவே சரியான போய், இப்போது நான், 6 மணிக்கு முடிவடையும்
இது நான் உண்மையாக திரும்பி நான், தேடிக்கொண்டிருக்கிறேன் மதிப்பு.
நான் பார்க்க போகிறேன் அடுத்த மதிப்பு 10 ஆகும்.
சரி. ரூட் பின்பற்ற வேண்டும் - என்று துண்டித்து - 10 எனவே, இப்போது, போகிறது.
இப்போது, 10 7 அதிகமாக இருக்கும், அதனால் நான் சரி பார்க்க வேண்டும்.
நான் இங்கு வந்து போகிறேன், 10, 9 விட போகிறது
அதனால் நான் பார்க்க விரும்புகிறேன் போகிறேன்.
நான் இங்கு வந்து, ஆனால் இங்கு இப்போது நான் பூஜ்ய இருக்கிறேன்.
நான் வெற்று வெற்றி என்றால் நான் என்ன செய்வது?
[மாணவர்] தவறான திரும்ப? >> சரி. நான் 10 கண்டுபிடிக்க முடியவில்லை.
1 கிட்டத்தட்ட ஒரே வழக்கில் இருக்கும்,
தவிர அது சுண்டி வேண்டும் நடக்கிறது; தேடும் பதிலாக
வலது பக்க கீழே, நான் இடது பக்க பார்த்து போகிறேன்.
>> இப்போது நான் உண்மையில் குறியீடு பெற நினைக்கிறேன்.
அங்கு இங்கே தான் - CS50 பயன்பாட்டிற்கான திறக்க மற்றும் அங்கு உங்கள் வழியில் செல்லவும்,
ஆனால் நீங்கள் இடத்தில் அதை செய்ய தான் முடியும்.
அது, ஒருவேளை இடத்தில் அதை செய்ய சரியான நேரம்
நாம் இடத்தில் வேலை ஏனெனில்.
"முதலில் நாங்கள் எண்ணாக மதிப்புகள் கொண்ட பைனரி மரம் முனைக்கு ஒரு புதிய வகை வரையறை வேண்டும்.
கீழே typedef பாய்லர் பயன்படுத்தி,
ஒரு பைனரி மரம் ஒரு முனை ஒரு புதிய வகை வரையறை உருவாக்க.
நீங்கள் சிக்கிவிடும் என்று. . . "அபத்தம், அபத்தம், அபத்தம். சரி.
எனவே இங்கே பாய்லர் வைத்து விட்டு,
typedef struct முனை, மற்றும் கணு. சரி, சரி.
எனவே நாம் நமது முனை உள்ள வேண்டும் போகிறோம் துறைகளில் என்ன?
[மாணவர்] இரண்டு சுட்டிகள் பின்னர் முகப்பு மற்றும்?
>> முகப்பு மதிப்பு, இரண்டு சுட்டிகள்? எப்படி நான் சுட்டிகள் எழுத?
[மாணவர்] Struct. >> நான், ஆமாம், அப்படி struct முனை * விட்டு உள்ளே பெரிதாக்க வேண்டும்
மற்றும் struct முனை * சரி.
மேலும், கடந்த முறை இருந்து விவாதம் நினைவில்
இந்த அர்த்தமற்றது என்று, இந்த, எந்த அர்த்தமும்
இந்த அர்த்தமற்றது.
இந்த ரிகர்ஸிவ் struct வரையறுக்கும் நோக்கில் அங்கு எல்லாம் வேண்டும்.
சரி, அது என்ன நம் மரம் போல் போகிறது என்று.
நாம் ஒரு trinary மரம் செய்தால், பின் ஒரு முனை B1, B2, struct முனை * b3, எவ்வாறு இருக்கும்
ப ஒரு கிளை உள்ளது - உண்மையில், நான் இன்னும் அதை, நடுத்தர, வலது, ஆனால் அதை விட்டு நான் கேள்விப்பட்டிருக்கிறேன்.
நாம் மட்டும் பைனரி பற்றி கவலை, மிக சரியான, இடது.
"இப்போது மரத்தின் வேர் ஒரு உலக முனை * மாறி பிரகடனம்."
எனவே நாம் அதை செய்ய போவதில்லை.
விஷயங்களை சற்றே கடினமான மற்றும் மிகவும் பொதுவான அடைவதற்காக,
நாங்கள் ஒரு உலக முனை மாறி முடியாது.
அதற்கு பதிலாக, முக்கிய நாம், நமது முனை விஷயங்களை பிரகடனம்
நாம் இயங்கும் தொடங்கும் போது, அந்த, அந்த கீழே பொருள்
எங்கள் கொண்டுள்ளது செயல்பாடு மற்றும் நம் சேர்த்த செயல்பாடு,
மாறாக நம் கொண்டுள்ளது மட்டும், இந்த உலக முனை மாறி பயன்படுத்தி
நாம் அது செயல்படுத்த வேண்டும் என்று ஒரு வாதம் மரம் எடுத்து போகிறது.
உலக மாறி கொண்ட விஷயங்கள் எளிதாக இருந்தது.
நாம் விஷயங்களை கடினமாக செய்ய போகிறோம்.
இப்போது, தான் இந்த வகை செய்ய நான் ஒரு நிமிடம் அல்லது எடுத்து
உள்ளே முக்கிய இந்த மரம் உருவாக்க வேண்டும், மற்றும் நீங்கள் செய்ய வேண்டும், எங்கே.
முயற்சி மற்றும் உங்கள் முக்கிய செயல்பாடு இந்த மரம் கட்ட.
>> சரி. எனவே நீங்கள் இன்னும் மரம் முழு வழி அமைக்க வேண்டும் இல்லை.
ஆனால் யாரையும் நான் இழுக்க முடியும் ஏதாவது
ஒரு பெரிய மரம் அமைக்க தொடங்க எப்படி காட்ட?
[மாணவர்] யாரோ அசைத்தல், வெளியே முயற்சி.
[Bowden] அவர்கள் மரம் கட்டுமான வசதியாக எவரும்?
[மாணவர்] நிச்சயமாக. அதை செய்யவில்லை. பரவாயில்லை >>. நாம் தான் முடிக்க முடியும் -
ஓ, அதை காப்பாற்ற முடியும்? ஹைய்யா.
இங்கு நாம் - ஓ, நான் சற்று துண்டித்து விட்டேன்.
நான் காண்பிக்க?
பெரிதாக்க, வெளியே உருட்டும். நான் ஒரு கேள்வி >>. >> சரி?
[மாணவர்] நீங்கள் struct வரையறை போது, ஏதாவது துவக்கப்படும் போன்ற விஷயங்கள் இருக்கின்றன?
[Bowden] இல்லை >> சரி. எனவே நீங்கள் துவக்க வேண்டும் -
[Bowden] இல்லை ஒரு struct நீங்கள் வரையறுக்க போது, அல்லது நீங்கள் அறிவிக்கும் போது,
இது முன்னிருப்பாக துவக்கப்படும்; நீங்கள் ஒரு முழு எண்ணாக அறிவிக்க என்றால் அது போல தான்.
அது போலவே தான். அதன் தனிப்பட்ட துறைகளில் ஒவ்வொரு போல்
அது ஒரு குப்பை மதிப்பு இருக்க முடியும். ஒரு struct அல்லது அறிவிக்க - >> இது வரையறுக்க முடியும்
அது ஒரு வகையில் அவர்களுக்கு துவக்க?
[Bowden] ஆமாம். எனவே, குறுக்குவழி துவக்கும் தொடரியல்
போன்ற போகிறது -
நாம் இதை செய்ய இரண்டு வழிகள் உள்ளன. நான் அதை தொகுக்க வேண்டும் என்று
நிச்சயமாக கணகண வென்ற சப்தம் செய்ய இந்த செய்கிறது.
struct வருகிறது என்று வாதங்கள் பொருட்டு,
இந்த சுருள் ப்ரேஸ்களை உள்ளே வாதங்கள் வரிசை என்று வைத்து.
நீங்கள் 9 அதனை துவக்க வேண்டும், மற்றும் இடது இருந்தால் சரி, பூஜ்ய இருக்கும் பூஜ்ய மற்றும்
இது, பூஜ்ய, பூஜ்ய 9 வேண்டும்.
, மாற்று, மற்றும் ஆசிரியர் இந்த இலக்கணத்தை பிடிக்காது
அது, நான் ஒரு புதிய தொகுதி வேண்டும் நினைக்கிறார்கள்
ஆனால் மாற்று ஒன்று போல் -
இங்கே, நான் ஒரு புதிய வரியில் அதை போடுகிறேன்.
நீங்கள் வெளிப்படையாக சொல்ல முடியாது, நான் சரியான இலக்கணத்தை மறக்க.
எனவே நீங்கள் வெளிப்படையாக, பெயர் அவர்களை, மற்றும் சொல்ல முடியும்
. கேட்ச், அல்லது. மதிப்பு = 9,. இடது = NULL.
நான் காற்புள்ளிகளை இருக்கும் இந்த தேவையை யோசிக்காமல்.
. சரியான = NULL, நீ என்ன இந்த வழி
உண்மையில், struct வரிசை தெரிய வேண்டும்
நீங்கள் இந்த வாசிப்பு போது, இது மிகவும் வெளிப்படையான தான்
என்ன மதிப்பு துவக்கப்படும்.
>> இந்த விஷயங்களை ஒன்றாக நடக்கும் -
எனவே, பெரும்பாலான, சி + + சி ஒரு மூலக்கணமாகும்
நீங்கள் சி + +, மற்றும் தொகுக்க வேண்டும் அதை நகர்த்த, சி குறியீடு எடுத்து கொள்ளலாம்.
இந்த சி + + ஆதரிக்கவில்லை என்று விஷயங்களை ஒன்றாகும், அதனால் மக்கள் அதை செய்ய மாட்டார்கள்.
அந்த மக்கள் அதை செய்ய மாட்டார்கள் மட்டுமே காரணம் என்று நான், எனக்கு தெரியாது
ஆனால் நான் அதை பயன்படுத்த தேவைப்படும் பட்சத்தில் சி + + மற்றும் நான் இந்த பயன்படுத்த முடியவில்லை வேலை தேவை.
என்று ஏதோ மற்றொரு எடுத்துக்காட்டாக சி + + வேலை இல்லை
எப்படி malloc, தொழில்நுட்ப ", வெற்றிடத்தை *" ஒரு கொடுக்கிறது
ஆனால் நீங்கள், கரி * x = malloc என்ன சொல்ல முடியும்
அது தானாகவே ஒரு எரிப்பதை * நடித்தார்.
அந்த தானியங்கி நடிகர் நடக்காது சி + +.
தொகுக்க முடியாது, நீங்கள் வெளிப்படையாக சொல்ல வேண்டும் என்று
கரி *, malloc, என்ன, ஒரு எரிப்பதை * அது நடிக்க வேண்டும்.
சி மற்றும் சி + + உடன்பட என்று பல விஷயங்களை, அங்கே இல்லை
ஆனால் அந்த இரண்டு.
எனவே நாம் இந்த இலக்கணத்தை செல்கிறேன்.
ஆனால் நாம் அந்த இலக்கணத்தை போகவில்லை என்றால்,
என்ன - இந்த தவறு இருக்கலாம்?
[மாணவர்] நான் dereference அது தேவையில்லை? >> சரி.
, அம்பு ஒரு உள்ளார்ந்த dereference என்று நினைவில்
எனவே நாம் தான், ஒரு struct கையாளும் போது
நாம் பயன்படுத்த வேண்டும். struct ஒரு துறையில் உள்ளே உள்ள பெற.
நாம் அம்புக்குறி பயன்படுத்த மட்டுமே நேரம் நாம் செய்ய வேண்டும் போது தான் -
நன்றாக, அம்பு ஆகும் -
என்று நான் அம்புக்குறி பயன்படுத்தப்படும் அது பொருள் என்று என்ன.
அனைத்து செய்திகள் வகையில், dereference இந்த, இப்போது நான் ஒரு struct இருக்கிறேன், மற்றும் நான் புலம் பெற முடியும்.
நேரடியாகவோ அல்லது dereference துறையில் பெற துறையில் கிடைக்கும் -
நான் இந்த மதிப்பு இருக்க வேண்டும் என்று நினைக்கிறேன்.
ஆனால் இங்கே நான், ஒரு struct, ஒரு struct ஒரு சுட்டிக்காட்டி கையாள்வதில்
அதனால் நான் அம்புக்குறி பயன்படுத்த முடியாது.
ஆனால் ஒன்று இந்த மாதிரி நாம் அனைத்து முனைகளில் செய்ய முடியும்.
கடவுளே.
இந்த 6, 7, மற்றும் 3 ஆகும்.
நாம் நமது மரம் கிளைகளை அமைக்க முடியாது, நாங்கள் 7 முடியும் -
நாம், அதன் இடது 3 சுட்டி.
எனவே எப்படி என்று நாம் செய்வது?
[மாணவர்கள், புரிந்து] >> சரி. node3 முகவரி,
நீங்கள் முகவரி இல்லை என்றால், பிறகு அது தொகுக்க முடியாது.
ஆனால் இந்த அடுத்த முனைகளில் சுட்டிகளையும் என்று ஞாபகம்.
சரி, 9 நோக்கியிருக்க வேண்டும்
3 6 வலது சுட்டி வேண்டும்.
நான் இந்த அனைத்து தொகுப்பு நினைக்கிறேன். எந்த கருத்துக்கள் அல்லது கேள்விகள்?
[மாணவர், புரிந்து] ரூட் 7 ஆக போகிறது.
நாம் தான் முனை சொல்ல முடியாது * PTR =
அல்லது ரூட், = & node7.
>> நம் தேவைகளுக்காக, நாம், நுழைவு கையாள்வதில் போகிறாய்
எனவே நாம் இந்த பைனரி மரம் செருக ஒரு செயல்பாடு எழுத வேண்டும் போகிறாய்
மற்றும் நுழைவு தவிர்க்க முடியாமல் இந்த மரம் ஒரு புதிய கணு உருவாக்க malloc அழைக்க போகிறார்.
எனவே விஷயங்கள் உண்மையில் ஒரு குளறுபடியான பெற போகிறோம் என்று சில முனைகள்
ஸ்டேக்கில் தற்போது
மற்றும் பிற முனைகளில் நாம் செருக போது குவியல் மீது முடிவுக்கு போகிறார்கள்.
இந்த செய்தபின் கச்சிதமாக இருக்கும், ஆனால் தான் காரணம்
நாம் ஸ்டேக்கில் இதை செய்ய முடியும் என்று
அது எங்களுக்கு தெரியும் என்று ஒரு திட்டமிடப்பட்டது எடுத்துக்காட்டு காரணம்
மரம் 7, 3, 6, 9 ஆகிய அமைக்கப்படவேண்டும் வேண்டும்.
இந்த இல்லை என்றால், நாம் முதலில் malloc வேண்டும் என்று.
நாம் ஒரு பிட் பிறகு பார்க்கலாம் என்று, நாம் malloc'ing.
இப்போது அது, ஸ்டாக் வைக்க செய்தபின் நியாயமான தான்
ஆனால் ஒரு malloc செயல்படுத்த இந்த மாற்ற வேண்டும்.
எனவே இந்த ஒவ்வொரு இப்போது ஒன்று போல் இருக்கும்
கணு * node9 = malloc (sizeof (முனை)).
இப்போது நாம் சோதனை செய்ய போகிறது.
(== NULL node9) என்றால் - அந்த விரும்பவில்லை -
1 திரும்பி, இப்போது அது ஒரு சுட்டிக்காட்டி ஏனெனில் நாம், node9-> செய்ய முடியும்
மதிப்பு = 6, node9-> விட்டு = NULL,
node9-> சரியான = NULL,
நாம் அந்த முனைகளில் ஒவ்வொரு செய்ய போகிறது.
எனவே அதற்கு பதிலாக, ஒரு தனி செயல்பாடு உள்ளே வைத்து விட்டு.
நாம் அது முனை * build_node அழைப்பு
இந்த நாங்கள் ஹஃப்மேன் கோடிங் வழங்கும் API கள் ஓரளவு ஒத்ததாகும்.
நாம் ஒரு மரம் நீ துவக்கி செயல்பாடுகளை கொடுக்க
மற்றும் deconstructor அந்த மரங்கள் மற்றும் காடுகள் அதே இடம் "செயல்பாடுகளை".
>> இங்கு நாம் ஒரு துவக்கி செயல்பாடு போகிறது
இப்போது நமக்கு ஒரு முனை உருவாக்க.
அதை சரியாக இந்த அழகான மிகவும் பார்க்க நடக்கிறது.
நான் கூட சோம்பேறியாக சென்று, மாறி பெயரை மாற்ற
node9 இனி எந்த அர்த்தமும் கூட.
ஓ, நான் node9 மதிப்பு 6 இருந்திருக்க வேண்டும் என்று நினைக்கிறேன்.
இப்போது நாம் node9 திரும்ப முடியும்.
இங்கு நாம் பூஜ்ய திரும்ப வேண்டும்.
ஒவ்வொருவரும் உருவாக்க ஒரு முனை செயல்பாடு ஏற்று?
எனவே இப்போது நாம் ஒரு குறிப்பிட்ட மதிப்பை மற்றும் பூஜ்ய சுட்டிகள் எந்த முனை உருவாக்க என்று அழைக்க முடியும்.
இப்போது நாங்கள் அந்த அழைக்க முடியும், நாம் முனை * node9 = build_node (9) செய்ய முடியும்.
மற்றும் செய்வோம். . .
6, 3, 7, 6, 3, 7.
இப்போது நாம், அதே சுட்டிகள் அமைக்க வேண்டும்
இப்போது தவிர அனைத்தையும் சுட்டிகள் அடிப்படையில் ஏற்கனவே
எனவே இனி முகவரி வேண்டும்.
சரி. அதனால் நான் என்ன செய்ய வேண்டும் கடைசி விஷயம் என்ன?
நான் செய்யவில்லை என்று ஒரு பிழை சோதனை உள்ளது.
கணு திரும்ப என்ன உருவாக்க?
[மாணவர், புரிந்து] >> சரி. Malloc தவறினால், அது வெற்று தருகிறேன்.
அதனால் நான் lazily பதிலாக ஒவ்வொரு ஒரு நிலையில் செய்து இங்கே அதை கீழே போட போகிறேன்.
நீங்கள் (node9 == NULL, அல்லது - கூட எளிமையான,
இது இல்லை என்றால் node9 ஆகும்.
என்றால் இல்லை node9, அல்லது node6, அல்லது node3, அல்லது node7 எனவே, 1 திருப்பி.
ஒருவேளை நாம் malloc தோல்வி, அல்லது ஏதாவது அச்சிட வேண்டும்.
[மாணவர்] அதே பூஜ்ய சமமாக பொய்யா?
[Bowden] ஏதாவதொன்று பூச்சியமாக மதிப்பு தவறானது.
எனவே பூஜ்ய ஒரு பூஜ்யம் மதிப்பு.
பூஜ்யம் பூஜ்யம் மதிப்பு. தவறான ஒரு பூஜ்யம் மதிப்பு.
எந்த - அழகான மிகவும் மட்டும் 2 பூஜ்ய மதிப்புகள் பூஜ்ய மற்றும் பூஜ்ஜியமாக இருக்கும்,
தவறான பூஜ்யம் வரையறுக்கப்பட்ட ஒரு ஹாஷ் உள்ளது.
நாம் உலக மாறி அறிவிக்க என்றால் கூட பொருந்தும்.
நாம் இங்கே முனை * ரூட் வரை இருக்கிறது, என்று
பின் - உலக மாறிகள் பற்றி நல்ல விஷயம் அவர்கள் எப்போதும் ஆரம்ப மதிப்பு என்று.
செயல்பாடுகளின் உண்மை இல்லை, எப்படி உள்ளே இங்கிருந்து,
நாம் இருந்தால், போன்ற, கணு * அல்லது கணு x.
நாங்கள் யோசனை என்ன x.value, x.whatever, வேண்டும்
அல்லது நாம் அவர்களை அச்சிட முடியும் அவர்கள் தன்னிச்சையாக இருக்க முடியும்.
உலக மாறிகளின் உண்மை இல்லை.
அதனால் முனை ரூட் அல்லது கணு x.
முன்னிருப்பாக, உலக என்று எல்லாம், இல்லை என்றால் வெளிப்படையாக, சில மதிப்பு துவக்கப்படும்
அதன் மதிப்பு ஒரு பூஜ்ஜியம் மதிப்பை கொண்டுள்ளது.
இங்கு, கணு * ரூட், நாம் வெளிப்படையாக, எதையும் துவக்க கூடாது
அதன் முன்னிருப்பு மதிப்பு சுட்டிகள் பூஜ்யம் மதிப்பு என்பது, பூஜ்ய இருக்கும்.
x முன்னிருப்பு மதிப்பு, x.value பூஜ்யம் என்று அர்த்தம் என்ன
x.left பூஜ்ய, மற்றும் x.right பூஜ்ய உள்ளது.
அது ஒரு struct இருக்கும் என்பதால், struct துறைகளில் அனைத்து பூஜ்ய மதிப்புகள் இருக்கும்.
நாம் என்றாலும், அந்த இங்கே பயன்படுத்த தேவையில்லை.
[மாணவர்] structs மற்ற மாறிகள் விட வித்தியாசமாக இருக்கிறது, மற்றும் பிற காரணிகள் ஆகும்
குப்பை மதிப்புகள்; இந்த பூஜ்ஜியங்களாக இருக்கும்?
மிகவும் [Bowden] பிற மதிப்புகளை. எனவே x இல், x பூஜ்ஜியமாக இருக்கும்.
உலக நோக்கம் என்று இருந்தால், அது ஒரு ஆரம்ப மதிப்பு உள்ளது. சரி >>.
[Bowden] ஒன்று நீங்கள் அல்லது பூஜ்யம் கொடுத்தார் ஆரம்ப மதிப்பு.
நான் இந்த அனைத்து காப்பாற்றுகிறாள் என்று.
>> சரி. எனவே கேள்வி அடுத்த பகுதி, கேட்கும்
"இப்போது நாம் இருக்கும் என்று ஒரு செயல்பாடு எழுத வேண்டும்
bool ஒரு ப்ரோட்டோடைப் int மதிப்பை கொண்டுள்ளது. "
நாம் bool int மதிப்பை கொண்டுள்ளது செய்ய போவதில்லை.
எங்கள் முன்மாதிரி இருக்க போகிறது
bool (int மதிப்பை கொண்டுள்ளது.
மற்றும் நாம் அதை மரம் கடந்து போகிறாய்
அது அந்த மதிப்பு உள்ளது என்பதை சோதனை என்று.
அதனால் முனை * மரம்). சரி.
பின்னர் நாம், போன்ற ஏதாவது அதை அழைக்க முடியும்
ஒருவேளை நாம் printf அல்லது ஏதாவது வேண்டும் என்று நான் நினைக்கிறேன்.
6, நமது ரூட் கொண்டுள்ளது.
ஒரு, அல்லது உண்மை, திரும்ப வேண்டும் என்று
கொண்டுள்ளது, அதே சமயம் 5 ரூட் தவறான திரும்ப வேண்டும்.
இந்த செயல்படுத்த இரண்டாவது எடுத்து.
நீங்கள் பல் செயலாற்றலாலோ அல்லது மீண்டும் மீண்டும் அதை செய்ய முடியும்.
நாம் விஷயங்களை அமைக்க நான் வழி பற்றி நல்ல விஷயம் என்று
இது மிகவும் எளிதாக நம் சுழல்நிலை தீர்வு தன்னை வைப்பார்
உலக-மாறி வழி விட.
நாம் மட்டும் இருந்தால் int மதிப்பை கொண்டுள்ளது, ஏனெனில், நாம் subtrees கீழே recursing வழி ஏதுமில்லை.
நாம் நமக்கு subtrees கீழே recurses என்று ஒரு தனி உதவி செயல்பாடு வேண்டும்.
ஆனால் நாம் மாறிவிட்டேன் இருந்து, ஒரு விவாதம் மரம் எடுத்து
இது எப்போதும் முதல் இடத்தில் உள்ளது
இப்போது நாம் தொடரை எளிதாக முடியும்.
எனவே பங்கேற்பு அல்லது சுழல்நிலை, நாங்கள் இருவரும் மேல் போகலாம்
ஆனால் நாம் மிக எளிதாக அந்த சுழல்நிலை முனைகளிலும் பார்க்கிறேன்.
சரி. யாரையும் நாங்கள் வேலை செய்ய ஏதாவது உள்ளதா?
>> [மாணவர்] நான் ஒரு தீர்வு பங்கேற்பு கிடைத்துவிட்டது. >> சரி, பங்கேற்பு.
சரி, இந்த நல்ல தெரிகிறது.
அதனால், இது வரை நாம் நடக்க வேண்டும்?
[மாணவர்] நிச்சயமாக. அதனால் நான் மரம் முதல் முனை பெற ஒரு திறக்க மாறி அமைக்க.
பின்னர் நான், temp சம பூஜ்ய இல்லை போது மூலம் சுருக்கிடப்படுகிறது
எனவே மரம் இருந்த நான் நினைக்கிறேன்.
மதிப்பு சமமாக இருந்தால் மற்றும் temp, சுட்டி காட்டியது என்று
அது அந்த மதிப்பினை கொடுக்கிறது.
வலது பக்க அல்லது இடது புறத்தில், இல்லையெனில், அது சரிபார்க்கிறது.
நீங்கள் இதுவரை எந்த மரம் அங்கு தான் ஒரு சூழ்நிலை கிடைக்கும், என்று
அது வெளியேறும் சுழற்சி மற்றும் தவறான கொடுக்கிறது - அது கொடுக்கிறது.
[Bowden] சரி. அதனால் நல்ல தெரிகிறது.
யாரும் எதையும் எந்த கருத்து உள்ளது?
எனக்கு சரியான கருத்து இல்லை.
நாம் என்ன செய்ய முடியும் ஒன்று இந்த பையன்.
ஓ, இது ஒரு சிறிய ஓரளவு நீண்ட செல்ல நடக்கிறது.
நான் அதை பார்த்துக்கொள்கிறேன். சரி.
>> அனைவருக்கும் மும்மை எவ்வாறு நினைவில் வைத்து கொள்ள வேண்டும்.
நிச்சயமாக கடந்த காலத்தில் அங்கு வினாடி வினாக்கள்
என்று, நீ ஒரு மும்மை ஆபரேட்டர் ஒரு செயல்பாடு கொடுக்க
மற்றும் மும்மை பயன்படுத்த கூடாது என்று ஏதாவது செய்ய வேண்டும், இந்த மொழிபெயர்க்க.
நான் மும்மை பயன்படுத்த நினைக்கிறேன் என்று இந்த ஒரு பொதுவான விஷயம்,
சில நிலையில் ஏதோ ஒரு மாறி அமைக்க, அங்கு என்றால்
வேறு வேறு என்று அதே மாறி அமைக்க.
மிகவும் அடிக்கடி தான் இந்த வகையான மாற்றப்பட்டு முடியும் என்று ஏதோ என்று
இந்த என்று மாறி அமைக்க - அல்லது, நன்றாக, இது உண்மையா? இந்த, வேறு இந்த.
[மாணவர்] முதல் ஒரு உண்மையான, சரியான என்றால் என்ன?
[Bowden] சரி. நான் எப்போதும் அதை படிக்க வழி, திறக்க, திறக்க மதிப்பு அதிகமாக மதிப்பு சமம்
இந்த, வேறு இந்த. இது ஒரு கேள்வி கேட்கிறாள்.
இது மிக மிக அதிகமாக இருக்கிறது? பின்னர் முதல் காரியம். வேறு இரண்டாவது காரியம்.
நான் எப்போதும் - பெருங்குடல், நான் - என் தலையில், நான் வேறு வாசிக்க.
>> யாராவது ஒரு சுழல்நிலை தீர்வு உள்ளதா?
சரி. நாங்கள் போகிறோம், இந்த ஒரு - அது ஏற்கனவே, பெரும் முடியும்
ஆனால் நாம் இன்னும் நன்றாக செய்ய போகிறோம்.
இந்த அழகான அதே சரியான யோசனை.
அது மட்டுமல்ல, நன்றாக, நீங்கள் விளக்க வேண்டும்?
[மாணவர்] நிச்சயமாக. எனவே, மரம் முதல் null என்று உறுதி செய்கிறாய்
மரம் பூஜ்ய இருந்தால் அது நாம் இல்லை ஏனெனில் தவறான திரும்ப நடக்கிறது என்பதால்.
ஒரு மரம் இன்னும் இருந்தால், நாம் போக - மதிப்பு தற்போதைய முனை என்றால் நாம் முதலில் பார்க்க.
அது இருந்தால் உண்மை திரும்பி, மற்றும் இடது அல்லது வலது என்றால் நாம் தொடரை.
அந்த ஒலி பொருத்தமான செய்கிறது? >> MM-இருகிறது. (ஒப்பந்தம்)
இந்த கிட்டத்தட்ட என்பதை நீங்கள் கவனிக்க - பங்கேற்பு தீர்வு கட்டமைப்புரீதியாக மிகவும் ஒத்த.
அதை பதிலாக recursing, நாம் ஒரு வளையம் என்று மட்டும் தான்.
மரம் சம பூஜ்ய இல்லை அங்கு இங்கு அடிப்படை வழக்கு
நாம் அதே சுழற்சியில் வெடித்தது கீழ் நிலை இருந்தது.
அவர்கள் மிகவும் ஒத்த இருக்கும். ஆனால் நாம் இன்னும் ஒரு படி எடுத்து செல்கிறோம்.
இப்போது, நாம் இங்கே அதையே செய்வார்கள்.
நாம் இந்த வரிகளை இருவரும் அதே விஷயத்தை மீண்டும் நீங்கள் கவனிக்கவில்லையா,
தவிர ஒரு வாதம் வேறு.
எனவே நாம் ஒரு மும்மை அந்த போகிறாய்.
நான் விருப்பத்தை ஏதாவது பாதிப்பு, மற்றும் அது ஒரு சின்னமாக இருந்தது. சரி.
நாம் திரும்பி செல்கிறோம் என்று உள்ளது.
இந்த அது உள்ள காண்பிக்க, நன்றாக, பல கோடுகள் இருக்கும் வருகிறது.
பொதுவாக, ஒரு நவீனமான ஒன்று என, நான் பல மக்கள் நினைக்கவில்லை
அம்புக்குறி பின்னர் ஒரு இடத்தில் வைத்து, ஆனால் நான் தொடர்ச்சியாக என்றால், அது நல்லது என்று நினைக்கிறேன்.
மதிப்பு மரம் மதிப்பு குறைவாக இருந்தால், நாம், மரம் இடது தொடரை வேண்டும்
வேறு நாங்கள் மரம் வலது தொடரை வேண்டும்.
அதனால் இந்த தோற்றத்தை சிறிய செய்யும் படி இருந்தது.
இந்த தோற்றம் சிறிதாக்குவதோடு இரண்டு படி -
நாம் பல வழிகளில் இந்த பிரிக்க முடியாது.
சரி. அது சிறிய பார்க்க செய்யும் படி இரண்டு, இங்கே
எனவே மீண்டும் மதிப்பு மரம் மதிப்பு சமம், அல்லது என்ன கொண்டுள்ளது.
>> இது ஒரு முக்கியமான விஷயம்.
அவர் அதை வர்க்கத்தின் வெளிப்படையாக கூறினார் நான், நிச்சயமாக இல்லை
ஆனால் அது குறுகிய சுற்று மதிப்பீடு என.
இங்கே கருத்து மதிப்பு == மரம் மதிப்பு.
உண்மை இருந்தால், இந்த உண்மை, நாங்கள் விரும்பவில்லை 'அல்லது' என்று இங்கு என்ன இருக்கிறது.
அதனால் கூட இங்கு என்ன பற்றி சிந்திக்காமல்,
திரும்பி முழு வெளிப்பாடு என்ன?
[மாணவர்] பகல்? >> ஆமாம், ஏனெனில் எதுவும் உண்மை,
or'd - எதையும் அல்லது உண்மை or'd அவசியம் உண்மைதான்.
எனவே விரைவில் நாம் மீண்டும் மதிப்பு = மரத்தின் மதிப்பு, பார்க்க போன்ற
நாங்கள் தான் உண்மையான திரும்ப போகிறோம்.
கூட தொடரை போவதில்லை மேலும் வரி கீழே உள்ளது.
நாம் மேலும் ஒரு படி எடுத்து கொள்ளலாம்.
மீண்டும் மரம் சம பூஜ்ய இந்த அனைத்து இல்லை.
அது ஒரு வரி செயல்பாடு செய்யப்படுகிறது.
இந்த குறுகிய சுற்று மதிப்பீடு ஒரு உதாரணம் ஆகும்.
ஆனால் இப்போது அதே யோசனை -
பதிலாக - அப்படி என்றால் மரம் இல்லை சமமாக பூஜ்ய இல்லை - நன்கு அல்லது,
மரம் சம பூஜ்ய இருந்தால், அது, மோசமான நிலையில்
மரம் பூஜ்ய சமம் என்றால், முதல் நிலை தவறான போகிறது.
எதையும் anded மிகவும் தவறான என்ன ஆக போகிறது?
[மாணவர்] தவறு. >> சரி. இந்த குறுகிய சுற்று மதிப்பீடு மற்ற பாதி
அங்கு மரம், நாம் கூட செல்ல சமமாக இல்லை பூஜ்ய இல்லை என்றால் -
மரம் சம பூஜ்ய செய்தால் அல்லது, நாம் மதிப்பு == மரம் மதிப்பு செய்ய போவதில்லை.
நாங்கள் உடனடியாக தவறான திரும்ப போகிறோம்.
இது குறுகிய சுற்று மதிப்பீடு செய்யவில்லை என்றால் பின்னர் அது, முக்கியமானது
மரம் சம பூஜ்ய இல்லை என்றால், இந்த இரண்டாவது நிலையில், நொடி தவறு என்ன
மர> மதிப்பு பூஜ்ஜிய dereferencing ஏனெனில்.
அதனால் தான். இந்த செய்யலாம் - முறை இடம் பெயர.
இந்த, இந்த இந்த ஒரு வரி செய்து இல்லை, மேலும் ஒரு பொதுவான விஷயம்
ஆனால், இங்கே ஒருவேளை, நிலைமைகள் ஒரு பொதுவான விஷயம்
ஆனால் (மரம்! = NULL, மர> மதிப்பு == மதிப்பு), என்ன செய்தால்.
இந்த ஒரு மிகவும் பொதுவான நிலையில், அங்கு பதிலாக என்ற
இரண்டு என்பதெல்லாம் இந்த உடைக்க, போன்ற இடங்களில், மரம் பூஜ்ய இருக்கிறது?
சரி, அது வெற்று இல்லை, அதனால் இப்போது மதிப்பு சமமாக மரம் மதிப்பு? இதை.
அதற்கு பதிலாக, இந்த நிலையில், இந்த தவறு Seg
இந்த பூஜ்ய இருக்கும் நடந்தால் அதை உடைக்கும் ஏனெனில்.
உங்கள் மரம் முற்றிலும் தவறானது சுட்டிக்காட்டி இருந்தால் நன்றாக, நான் நினைக்கிறேன், அது இன்னும், தவறு Seg
மரம் பூஜ்ய என்று ஆனால் அது தவறு Seg முடியாது.
அது வெற்று இருந்தால் நீங்கள் எப்போதும் முதல் இடத்தில் சுட்டிக்காட்டி dereferenced முன், அதை உடைக்க வேண்டும்.
[மாணவர்] இந்த என சோம்பேறி மதிப்பீடு என்ன?
>> [Bowden] சோம்பேறிகள் மதிப்பீடு ஒரு தனி விஷயம்.
சோம்பேறி மதிப்பீடு, நீங்கள் ஒரு மதிப்பை கேட்க இன்னும் இருக்கிறது
நீங்கள் ஒரு மதிப்பை, என்ன கணக்கிட ask, ஆனால் நீங்கள் உடனடியாக அது தேவையில்லை.
நீங்கள் உண்மையில் அது வேண்டும் வரை, அது மதிப்பீடு அல்ல.
இந்த அதே விஷயம் இல்லை, ஆனால் ஹஃப்மேன் pset உள்ள,
அதை நாம் "lazily" எழுத கூறுகிறார்.
நாம் உண்மையில் எழுதும் தாங்கல் நீங்கள் ஏனெனில் நாம் அதை செய்ய காரணம் -
நாம், ஒரு நேரத்தில் தனிப்பட்ட பிட்கள் எழுத விரும்பவில்லை
அல்லது ஒரு நேரத்தில் தனிப்பட்ட பைட்டுகள், நாம் பதிலாக பைட்டுகள் ஒரு துண்டின் பெற வேண்டும்.
நாம் பைட்டுகள் ஒரு துண்டின் வேண்டும், பிறகு, நாம் அதை எழுத வேண்டும்.
நீங்கள் எழுத அதை கேட்க கூட - மற்றும் fwrite மற்றும் fread விஷயம் அதே மாதிரி செய்ய.
அவர்கள் உங்கள் எழுதுதல் மற்றும் தாங்குவதற்கு.
நீங்கள் உடனடியாக எழுத அதை கேட்க கூட, அது அநேகமாக முடியாது.
நீங்கள் எல்லாம் எழுத போகிறீர்கள் என்று இருக்க முடியாது
நீங்கள் hfclose அழைப்பு அல்லது என்ன வரை, இது
பின்னர் இதில், சரி, நான், என் கோப்பு மூடுவதற்கு
நான் நன்றாக நான் இதுவரை எழுதவில்லை எல்லாம் எழுத என்று அர்த்தம்.
அதை எல்லாம் வெளியே எழுத வேண்டும்
நீங்கள் கோப்பு மூடுவது, பின்னர் வரை அது தேவை.
அதனால் தான் என்ன சோம்பேறி - இது நடக்க வரை காத்திருக்கும்.
இந்த -, 51 எடுத்து மற்றும் நீங்கள் இன்னும் விரிவாக இது செல்கிறேன்
51 இல் OCaml எல்லாம், எல்லாம் மறுநிகழ்வு என்பதால்.
எந்த அடிப்படையில், தீர்வுகளை பங்கேற்பு உள்ளன.
எல்லாம் மறுநிகழ்வு, மற்றும் சோம்பேறி மதிப்பீடு இல்லை
சூழ்நிலைகள் நிறைய முக்கியமான போகிறது
நீங்கள் lazily மதிப்பீடு செய்யவில்லை என்றால், எங்கே, என்று அர்த்தம் என்று -
எடுத்துக்காட்டாக எண்ணற்ற நீண்ட அவை நீரோடைகள், இல்லை.
கோட்பாடு, நீங்கள், 1-2-3-4-5-6-7 ஒரு ஓடை போன்ற இயற்கை எண்கள் என்று முடியும்
எனவே lazily மதிப்பீடு விஷயங்களை நன்றாக இருக்கிறார்கள்.
நான் பத்தாவது வேண்டும் என்று சொன்னால், பிறகு நான் பத்தாவது வரை மதிப்பிட முடியாது.
நான் நூறாவது எண் விரும்பினால், நான் நூறாவது எண் வரை மதிப்பிட முடியாது.
சோம்பேறி மதிப்பீடு இல்லாமல், அது உடனடியாக அனைத்து எண்கள் மதிப்பீடு செய்ய முயற்சி நடக்கிறது.
நீங்கள் எண்ணற்ற பல எண்கள் மதிப்பீடு, மற்றும் மட்டும் முடியாது.
அதனால் சூழ்நிலைகள் நிறைய எங்கே சோம்பேறி மதிப்பீடு
விஷயங்களை வேலை செய்து தான் அவசியம்.
>> இப்போது நாம் சேர்த்த இருக்கும் அமைந்துள்ள நுழைவு எழுத வேண்டும்
இதேபோல் அதன் வரையறை மாறும்.
எனவே இப்போது அதை bool நுழைவு (int மதிப்பு) தான்.
நாம் bool நுழைவு (int மதிப்பு, கணு * மரம்) என்று மாற்ற போகிறோம்.
நாம் உண்மையில் ஒரு பிட் என்று மீண்டும் மாற்ற போகிறோம், நாம் ஏன் பார்க்க வேண்டும்.
மற்றும் நாம், நான் அதை கர்மம் என்ற, build_node நகர்த்த
நாம் ஒரு செயல்பாடு முன்மாதிரி எழுத இல்லை, எனவே மேலே செருக.
நீங்கள் சேர்த்த உள்ள build_node பயன்படுத்தி கொள்ள போகிறோம் என்று ஒரு குறிப்பு உள்ளது.
சரி. அந்த ஒரு நிமிடம்.
நீ அதை இழுக்க வேண்டும் என்றால் நான், நான் திருத்தம் சேமிக்கப்படும் என்று
அல்லது, குறைந்த பட்சம், நான் இப்போது இல்லை.
நான், நுழைவு தர்க்கம் பற்றி நினைத்து சற்று இடைவெளி தேவை
நீங்கள் அதை நினைக்க முடியாது.
அடிப்படையில், நீங்கள் மட்டும் எப்போதும் இலைகள் உள்ள சேர்க்கைக்கு.
நான் 1 செருக என்றால், இப்படி, நான் தவிர்க்க முடியாமல் 1 சேர்க்கைக்கு வேண்டும் போகிறேன் -
நான் கருப்பு மாற்ற வேண்டும் - I'll இங்கு 1 சேர்க்கைக்கு வேண்டும்.
நான் 4 செருக அல்லது, நான் இங்கு 4 சேர்க்கைக்கு வேண்டும்.
இல்லை, நீங்கள் என்ன செய்தாலும், அதனால், நீங்கள் ஒரு இலை உள்ள சேர்க்கைக்கு போகிறாய்.
நீங்கள் செய்ய வேண்டியது எல்லாம் நீங்கள் முனை பெற வரை மரம் கீழே கூறு இல்லை
அந்த முனை பெற்றோர், புதிய முனை பெற்றோர், இருக்க வேண்டும்
பின்னர் என்பதை பொறுத்து, அதன் இடது அல்லது வலது சுட்டி மாற்ற
அதை விட அதிகமாக அல்லது தற்போதைய முனை விட குறைவாக உள்ளது.
உங்கள் புதிய கணு சுட்டிக்காட்ட என்று சுட்டிக்காட்டி மாற்ற.
எனவே, மரம் கீழே கூறு புதிய முனை வரை இலை புள்ளி வைக்க.
அந்த முன் நிலைமை வகை தடைசெய்கிறது ஏன் என்று,
இது சரியான இருந்த நான் பைனரி மரம் கட்டப்பட்டு அங்கு
நீங்கள் ஒரே ஒரு முனை பார்த்து, நீங்கள்
நீங்கள் கீழே iterated என்றால் ஆனால் 9 7 இடது இருந்தது.
அதனால் பின்னர், இந்த சூழ்நிலையில் சாத்தியமில்லை -
சுமார் 9 அல்லது ஏதாவது சேர்க்கைக்கு நினைப்பு; முதல் முனை நேரத்தில்,
நான் 7 பார்க்க நான் சரியான போக போகிறேன் செல்கிறேன்.
எனவே, நான் ஒரு இலை சென்று சேர்க்கைக்கு நான் என்றால், நான் என்ன செய்தாலும்
அதற்கான வழிமுறையை பயன்படுத்தி ஒரு இலை வேண்டும்,
அது என்னை 7 இடது 9 செருக முடியாது என நடக்கிறது
விரைவில் நான் 7 வெற்றி என நான் போக போகிறேன், ஏனெனில்.
யார் தொடங்க ஏதாவது உள்ளதா?
[மாணவர்] நான். >> என்று.
[மாணவர், புரிந்து]
[மற்ற மாணவர்கள், புரிந்து]
[Bowden] இது பாராட்டப்பட்டது. சரி. விளக்க வேண்டும்?
>> நாம் சேர்த்த என்று தெரியும் என்பதால் [மாணவர்]
மரம் இறுதியில் புதிய முனைகள்,
நான் செயலாற்றலாலோ மரம் மூலம் சுருக்கிடப்படுகிறது
நான் வெற்று சுட்டிக்காட்டினார் ஒரு முனை வந்தது வரை.
பின்னர் நான் வலது பக்க அல்லது இடது பக்கத்தில் அதை வைத்து முடிவு
இது சரியான மாறி பயன்படுத்தி; அது எங்கு அதை போட சொன்னார்.
பின்னர், முக்கியமாக, நான் கடந்த செய்த -
இது உருவாக்கும் என்று புதிய கணு என்று திறக்க முனை புள்ளி,
இடது பக்கத்தில் வலது பக்கத்தில் ஒன்று, மதிப்பு சரி என்ன பொறுத்து.
இறுதியாக, நான் அதன் சோதனை மதிப்பு புதிய கணு மதிப்பு அமைக்க.
[Bowden] சரி, நான் இங்கே ஒரு பிரச்சினை பார்க்க.
இந்த அங்கே வழியில் 95% தான்.
நான் பார்க்க வேண்டும் என்று ஒரு பிரச்சினை, நன்றாக, வேறு யாராவது ஒரு பிரச்சினை பார்க்க வேண்டும்?
அவர்கள் சுழற்சி வெளியே உடைக்க கீழ் சூழ்நிலையில் என்ன?
[மாணவர்] திறக்க பூஜ்ய இருந்தால்? >> சரி. Temp பூஜ்ய இருந்தால் நீ வளைய வெளியே உடைக்க எப்படி இருக்கும்.
ஆனால் நான் இங்கு என்ன செய்ய?
தவிர்க்க முடியாமல் வெற்று இது நான் dereference திறக்க,.
எனவே நீங்கள் செய்ய வேண்டியது வேறு விஷயம் திறக்க பூஜ்ய வரை தான், கண்காணிக்க முடியாது
நீங்கள் எல்லா நேரங்களிலும் பெற்றோர் கண்காணிக்க வேண்டும்.
நாங்கள் முனை * பெற்றோர் விரும்பவில்லை, நான் நாம் பூஜ்ய முதல் அந்த வைத்திருக்க முடியும் என நினைக்கிறேன்.
இந்த, மரத்தின் வேர் விசித்திரமான நடத்தை போகிறாள்
ஆனால் நாம் அந்த கிடைக்கும்.
மதிப்பு என்ன விட பெரியதாக இருந்தால், பின்னர் திறக்க = திறக்க சரி.
ஆனால் நாம் முன்னர் என்று, பெற்றோர் = temp.
அல்லது பெற்றோர்கள் எப்போதும் சமமாக திறக்க போகிறோம்? வழக்கு என்று?
Temp வெற்று இல்லையெனில், நான், இல்லை என்ன விஷயம், கீழே நகர்த்த போகிறேன்
temp பெற்றோர் இது ஒரு முனை வேண்டும்.
எனவே பெற்றோர் திறக்க வேண்டும் நடக்கிறது, மற்றும் நான் கீழே திறக்க நடவடிக்கை.
இப்போது திறக்க பூஜ்ய, ஆனால் பூஜ்ய என்று விஷயம் பெற்றோர் செய்ய பெற்றோர் புள்ளிகள்.
அதனால் கீழே இங்கே, நான் சரியான 1 சமமாக அமைக்க விரும்பவில்லை.
அதனால் நான், மிக சரியான = 1 என்றால், சரியான சென்றார்
நான் உங்களுக்கு என்ன செய்ய வேண்டும் என்று நினைக்கிறேன் -
நீங்கள் இடது நகர என்றால், நீங்கள் 0 உரிமை சமமாக அமைக்க வேண்டும்.
அல்லது வேறு நீ சரியான செல்ல வேண்டும்.
எனவே சரியான = 0. வலது = 1 என்றால்,
இப்போது நாம், பெற்றோர் உரிமை சுட்டிக்காட்டி newnode செய்ய வேண்டும்
வேறு நாம் பெற்றோர் இடது சுட்டிக்காட்டி newnode செய்ய வேண்டும்.
என்று கேள்விகள்?
சரி. இந்த வழியில் நாங்கள் இல்லை - நன்றாக, உண்மையில், அதற்கு பதிலாக இதை,
நாம் பாதி நீ build_node பயன்படுத்த எதிர்பார்க்கப்படுகிறது.
Newnode பூஜ்ய சமம் என்றால், தவறான திரும்ப.
என்று தான். இப்போது, இந்த நீங்கள் செய்ய எதிர்பார்த்தேன்.
>> இந்த ஊழியர்கள் தீர்வுகள் என்ன ஆகும்.
நான் அதை பற்றி போகிறேன் "சரி" என இந்த உடன்படவில்லை
ஆனால் இந்த செய்தபின் நன்றாக அது வேலை செய்யும்.
இப்போது சற்றே சரி என்று ஒரு விஷயம்
மரம் பூஜ்ய என ஆஃப் தொடங்குகிறது என்றால், நாம் ஒரு வெற்று கிளையில் அனுப்ப.
நான் அதை நீங்கள் ஒரு வெற்று கிளையில் கடந்து நடத்தை வரையறை எப்படி பொறுத்து நினைக்கிறேன்.
நான், நீ ஒரு வெற்று கிளையில் அனுப்ப வேண்டும் என்று நினைப்பார்கள்
பின்னர் ஒரு வெற்று மரத்தில் மதிப்பு சேர்க்கைக்கு
தான் மதிப்பு என்று ஒற்றை முனை எங்கே ஒரு மரம் திரும்ப வேண்டும்.
மக்கள் உடன்பாடு? நீங்கள் முடியும், நீங்கள் விரும்பினால்,
நீங்கள் ஒரு வெற்று கிளையில் அனுப்ப வேண்டும்
நீங்கள் அதை ஒரு மதிப்பு நுழைக்க வேண்டும், தவறான திரும்ப.
அது வரையறுத்து வரை நீங்கள் தான்.
நான் என்று முதல் விஷயம் செய்ய -
ஏனெனில், நீங்கள், பிரச்சினை என்று செய்து இருக்கலாம்
நாங்கள் தான் ஒரு உலக சுட்டிக்காட்டி இருந்தால் அது, எளிதாக இருக்கும்
மரம் பூஜ்ய இருந்தால் ஆனால் நாம், அதனால், நாம் அதை பற்றி என்ன செய்ய முடியும் எதுவும் இல்லை.
நாம் தான் தவறான திரும்ப முடியும்.
நான் சேர்த்த மாற்ற போகிறேன்.
நாம் தொழில்நுட்ப தான், இங்கே இது சரியான மாற்ற முடியும்
எப்படி அது, விஷயத்துக்கெல்லாம் தேடி
ஆனால் நான் ஒரு முனை ** மரம் எடுத்து நுழைவு மாற்ற போகிறேன்.
இரட்டை சுட்டிகள்.
இதற்கு என்ன அர்த்தம்?
அதற்கு பதிலாக முனைகளில் சுட்டிகளையும் கையாள்வது,
நான் கையாள்வது வேண்டும் போகிறேன் தான் இந்த சுட்டிக்காட்டி இருக்கிறது.
நான் இந்த சுட்டியை பயன்படுத்தி கொள்ள போகிறேன்.
நான் நேரடியாக சுட்டிகள் கையாள்வது வேண்டும் போகிறேன்.
, கீழே பற்றி சிந்திக்க இருந்து இந்த அர்த்தமுள்ளதாக -
நன்றாக, இப்போது இந்த புள்ளிகள் பூஜ்ய வேண்டும்.
நான் என்ன செய்ய வேண்டும் சுழியின்மை சுட்டி இந்த சுட்டிக்காட்டி கையாள வேண்டும்.
நான் அதை என் புதிய கணு சுட்டிக்காட்ட விரும்புகிறேன்.
நான் என் சுட்டிகள் சுட்டிகளையும் கண்காணிப்பதற்காக, என்றால்
நான் ஒரு தாய் சுட்டிக்காட்டி கண்காணிப்பதற்கான தேவையில்லை.
நான், சுட்டிக்காட்டி பூஜ்ய குறிக்கும் என்பதை பார்க்கவும் தடமறியலாம்
மற்றும் சுட்டி சுட்டி இருந்தால் பூஜ்ய வேண்டும்,
நான் முனை சுட்டிக்காட்ட அதை மாற்ற.
நான் சுட்டிக்காட்டி ஒரு சுட்டிக்காட்டி என்பதால் நான் அதை மாற்ற முடியும்.
இப்போது இது சரியான பார்க்கலாம்.
நீங்கள் உண்மையில் மறுசுழலில் அழகாக எளிதாக செய்ய முடியும்.
நாங்கள் அதை செய்ய வேண்டுமா?
ஆம், நாம்.
>> அது மீண்டும் மீண்டும் பார்க்கிறேன்.
முதல், என்ன நம் அடிப்படை வழக்கில் போகிறது?
எப்போதும் நம் அடிப்படை வழக்கு; ஆனால் உண்மையில், இந்த தந்திரமான வகையாக.
முதல் முதல் விஷயங்கள், நீங்கள் (மரம் == NULL)
நான் தான் தவறான திரும்ப போகிறோம் நினைக்கிறேன்.
இந்த உங்கள் மரம் இருப்பது பூஜ்ய வேறுபட்டது.
இந்த உங்கள் ரூட் சுட்டிக்காட்டி பூஜ்ய என்பதை சுட்டிக்காட்டி இருக்கிறது
இது உங்கள் ரூட் சுட்டிக்காட்டி இல்லை என்று அர்த்தம்.
அதனால் கீழே இங்கே, நான் என்ன செய்ய வேண்டும்
கணு * - இன் இந்த மீண்டும் நாம்.
கணு * ரூட் = NULL,
பின்னர் நான், இப்படி ஏதாவது செய்து சேர்த்த அழைக்க போகிறேன்
& ரூட் இந்த 4 செருக.
அதனால் & ரூட், ரூட் ஒரு முனை * இருந்தால்
பின்னர் & ரூட் ஒரு முனை ** போகிறது.
இந்த செல்லுபடியாகும். இங்கே இந்த வழக்கில், மரம்,,
அல்லது நுழைவு - மரம் பூஜ்ய அல்ல.
இங்கே. மரம் பூஜ்ய அல்ல; * மரம் பூஜ்ய உள்ளது, நலமாக உள்ளது
* மரம் பூஜ்ய இருந்தால், நான் அதை கையாள முடியும் என்பதால்,
இப்போது நான் சுட்டிக்காட்ட விரும்புகிறேன் சுட்டிக்காட்ட.
மரம் பூஜ்ய இருந்தால் ஆனால், அந்த நான் இங்கே வந்து பூஜ்ய என்று பொருள்.
பயன் இல்லை என்று. நான் அந்த ஒன்றும் செய்ய முடியாது.
மரம் பூஜ்ய இருந்தால், தவறான திரும்ப.
நான் அடிப்படையில் ஏற்கனவே நமது உண்மையான அடிப்படை விஷயம் என்ன கூறினார்.
என்ன என்று போகிறது?
[மாணவர், புரிந்து]
[Bowden] ஆமாம். எனவே (* மரம் == NULL) என்றால்.
இந்த இங்கு வழக்கில் தொடர்புடையதாக
என் சிவப்பு சுட்டிக்காட்டி சுட்டிக்காட்டி இருந்தால் நான் கவனம் எங்கே,
நான் இந்த சுட்டிக்காட்டி கவனம் போல் எனவே, இப்போது நான் இந்த சுட்டிக்காட்டி கவனம்.
இப்போது நான் இந்த சுட்டிக்காட்டி கவனம்.
நீங்கள் என் முனை ** இது என் சிவப்பு சுட்டிக்காட்டி,,
எப்போதாவது - * என்றால், என் சிவப்பு சுட்டிக்காட்டி, எப்போதும் பூஜ்ய உள்ளது
என்று நான் ஒரு சுட்டிக்காட்டி அந்த புள்ளிகளை மையமாக நான் அங்கு வழக்கு தான் அர்த்தம் -
இந்த ஒரு இலை சொந்தமானது என்று ஒரு சுட்டி உள்ளது.
நான் என் புதிய கணு சுட்டி இந்த சுட்டிக்காட்டி மாற்ற வேண்டும்.
இங்கு வந்து.
என் newnode ஒரு முனை * n = build_node (மதிப்பு) இருக்கும்
பின்னர் n, n = NULL என்றால், தவறான திரும்ப.
வேறு நாம் சுட்டிக்காட்டி தற்போது சுட்டி காட்டியது என்ன மாற்ற வேண்டும்
இப்போது நம் புதிதாக கட்டப்பட்ட முனை சுட்டிக்காட்ட.
நாம் உண்மையில் இங்கு என்ன செய்ய முடியும்.
அதற்கு பதிலாக n சொல்லி, நாம் சொல்ல * மரம் = * மரம் என்றால்.
ஒவ்வொருவரும் புரிந்து? அந்த சுட்டிகள் சுட்டிகளையும் கையாள்வதில் மூலம்,
நாம் அவர்களுக்கு சுட்டிக்காட்ட விரும்புகிறேன் விஷயங்களை சுட்டிக்காட்ட பூஜ்ய சுட்டிகள் மாற்ற முடியும்.
என்று நம் அடிப்படை வழக்கு.
>> இப்போது எங்கள் மீண்டும், அல்லது நம் மறுநிகழ்வு,
நாங்கள் செய்து வருகிறோம் மற்ற recursions போலவே இருக்கும்.
நாம், மதிப்பு சேர்க்க வேண்டும் போகிறாய்
இப்போது நான் மீண்டும் மும்மை பயன்படுத்த போகிறேன், ஆனால் என்ன எங்கள் நிலைமை என்ன?
அதை நாம் இடது அல்லது வலது செல்ல வேண்டும் என்பதை முடிவு செய்ய என்ன தேடுகிறீர்கள்?
தனி படிகளில் அதை நாம்.
நீங்கள் (மதிப்பு <) என்ன?
[மாணவர்] மரத்தின் மதிப்பு?
[Bowden] நான் தற்போது உள்ளேன் என்பதை நினைவில் -
[மாணவர்கள், புரிந்து]
[Bowden] அப்படியா சரி இங்கே, தான் சொல்கிறேன் என்று இந்த பச்சை அம்புக்குறி
மரம் தற்போது என்ன ஒரு உதாரணம், இந்த சுட்டியை ஒரு சுட்டிக்காட்டி இருக்கிறது.
அதனால் நான் 3 ஒரு சுட்டிக்காட்டி ஒரு சுட்டிக்காட்டி இருக்கிறேன் என்று பொருள்.
dereference இருமுறை நல்ல இனிக்கும்.
நான் என்ன செய்ய - நான் எப்படி செய்ய வேண்டும்?
[மாணவர்] ஒருமுறை Dereference, பின்னர் அதை அம்புக்குறி என்று வழி?
[Bowden] எனவே (* மரம்) முறை dereference தான், -> மதிப்பு
என்னை நான் மறைமுகமாக சுட்டி காட்டியது என்று நான் முனை மதிப்பு கொடுக்க வேண்டும்.
அதனால் நான் நீங்கள் விரும்பினால் அதை tree.value ** எழுதலாம்.
வேலை ஒன்று.
அந்த வழக்கு இருந்தால், நான் மதிப்பு செருக அழைக்க வேண்டும்.
என்ன என் மேம்படுத்தப்பட்டது முனை ** போகிறது?
நான் இடது செல்ல வேண்டும், ஆகவே ** tree.left என் இடது போகிறது.
நான் அந்த விஷயத்தை சுட்டிக்காட்டி வேண்டும்
அதனால் இடது பூஜ்ய சுட்டிக்காட்டி இருப்பது வரை முடிந்தால்,
நான் என் புதிய கணு சுட்டிக்காட்ட அதை மாற்ற முடியாது.
>> மற்றும் பிற வழக்கு மிகவும் ஒத்த இருக்க முடியும்.
அது உண்மையில் என் மும்மை என்று இப்போது செய்யலாம்.
என்றால் மதிப்பு <(** மரம்). மதிப்பு சேர்க்க.
நாம், இடது எங்கள் ** மேம்படுத்த வேண்டும்
வேறு நாம் சரியான எங்கள் ** மேம்படுத்த வேண்டும்.
[மாணவர்] அந்த முள்ளோடு சுட்டிக்காட்டி கிடைக்குமா?
[Bowden] என்பதை நினைவில் - ** tree.right ஒரு முனை நட்சத்திரம்.
[மாணவர், புரிந்து] >> சரி.
** Tree.right இந்த சுட்டியை அல்லது ஏதோ போல்.
அதனால் ஒரு சுட்டிக்காட்டி எடுத்து, அந்த எனக்கு என்ன வேண்டும் என்று எனக்கு கொடுக்கிறது
அந்த பையன் என்று சுட்டிக்காட்டி இருக்கிறது.
நாம் இரண்டு சுட்டிகள் பயன்படுத்தி ஏன் [மாணவர்] நாங்கள் மீண்டும் போக முடியுமா?
[Bowden] சரி. எனவே - இல்லை, நீங்கள் முன் முடியும், அந்த தீர்வு
இரண்டு சுட்டிகள் செய்யாமல் அதை ஒரு வழியாக இருந்தது.
நீங்கள், இரண்டு சுட்டிகள் பயன்படுத்தி கொள்ள முடியும் வேண்டும்
இந்த தெளிவான தீர்வு.
மேலும், என் மரம் என்றால் என்ன நடக்கும், என்று அறிவிப்பு -
என் ரூட் பூஜ்ய இருந்தால் என்ன நடக்கும்? நான் இங்கே இந்த வழக்கு செய்தால் என்ன நடக்கும்?
அதனால் முனை * ரூட் = NULL, மற்றும் வேர் என 4 செருக.
ரூட் இந்த பிறகு என்ன நடக்கிறது?
[மாணவர், புரிந்து] >> சரி.
ரூட் மதிப்பு 4 போகிறது.
ரூட் இடது பூஜ்ய போகிறது, ரூட் சரியான பூஜ்ஜிய போகிறது.
வழக்கில் நாம் எங்கே, முகவரி மூலம் ரூட் வெற்றி பெறவில்லை
நாம் ரூட் மாற்ற முடியவில்லை.
வழக்கில் இடத்தில் மரம் - ரூட் பூஜ்ய இருந்தது,
நாம் தான் தவறான திரும்ப வேண்டியதாயிற்று. நாம் செய்ய ஒன்றுமில்லை.
நாம் ஒரு வெற்று மரத்தில் ஒரு முனை செருக முடியாது.
ஆனால் இப்போது நாம்; நாங்கள் ஒரு முனை மரத்தில் ஒரு வெற்று மரம் செய்ய.
இது பொதுவாக வேலை செய்ய வேண்டும் என்று எதிர்பார்க்கப்படும் வழி.
>> மேலும், இந்த விட குறைவாக உள்ளது
பெற்றோர் கண்காணிப்பதற்கு, அதனால் நீங்கள் அனைவரும் கீழே கூறு.
இப்போது நான் என் பெற்றோர் இல்லை, நான் என்ன என் பெற்றோர் உரிமை சுட்டிக்காட்டி இருக்கிறது.
நாம் செயலாற்றலாலோ இந்த செய்தால் அதற்கு பதிலாக, இது ஒரு சுழற்சி அதே கருத்தை இருக்கும்.
ஆனால் அதற்கு பதிலாக என் பெற்றோர் சுட்டிக்காட்டி சமாளிக்க இருந்து,
அதற்கு பதிலாக என் தற்போதைய சுட்டிக்காட்டி தான் இருக்கும்
நான் நேரடியாக என் புதிய கணு சுட்டிக்காட்ட மாற்றும் என்று.
நான் அதை இடது சுட்டி காட்டும் என்பதை சமாளிக்க இல்லை.
நான் அதை சரி செய்ய சுட்டி காட்டும் என்பதை சமாளிக்க இல்லை.
இந்த சுட்டிக்காட்டி, நான் என் புதிய கணு சுட்டிக்காட்ட அதை அமைக்க போகிறேன் என்பது என்ன தான் இருக்கிறது.
எல்லோரும் அதை எவ்வாறு புரிந்து?
இல்லை என்றால் நாம் ஏன், இந்த வழி செய்யவேண்டும்
ஆனால் குறைந்த பட்சம் இந்த ஒரு தீர்வாக வேலை?
[மாணவர்] எங்கே நாம் உண்மையான திருப்பி?
[Bowden] சரி இங்கே அநேகமாக அது.
நாம் சரியாக பொருத்தி இருந்தால், உண்மை திருப்பி.
வேறு, கீழே இங்கே நாம் சேர்த்த வருமானம் என்ன திரும்ப வேண்டும் போகிறோம்.
>> இந்த ரிகர்ஸிவ் செயல்பாடு பற்றி சிறப்பு என்ன?
இது, மிக நீண்ட நாம் சில உகந்ததாக்கலை தொகுக்கலாம் என, சூத்திர வால் தான்
, அதை அங்கீகரிக்கும் இந்த ஒரு அடுக்கு வழிதல் வராது
எங்கள் மரம் 10,000 அல்லது 10 மில்லியன் உயரத்தில் உள்ளது கூட.
[மாணவர், புரிந்து]
[Bowden] நான் சிறுகோடு அது நினைக்கிறேன் - அல்லது என்ன ஆப்டிமைசேஷன் நிலை
அங்கீகரிக்கப்பட ஒரு வால் மறுநிகழ்வு தேவைப்படுகிறது.
நான் அதை உணர்ந்து தான் - GCC மற்றும் கணகண வென்ற சப்தம்
தங்கள் உகந்ததாக்கல் நிலைகளை வெவ்வேறு அர்த்தங்களை.
நான் அது வால் மறுநிகழ்வு அங்கீகரிக்க உறுதியாக DashO 2, தான் சொல்ல வேண்டும்.
ஆனால் நாம் - நீங்கள் ஒரு Fibonocci எடுத்துக்காட்டாக அல்லது வேறு ஏதாவதா அமைக்க முடியும்.
அதை கட்ட முடியாது, ஏனெனில் இது, இந்த சோதிக்க எளிதல்ல
அதனால் பெரிய என்று ஒரு பைனரி மரம்.
ஆனால் ஆமாம், நான் அதை DashO 2, என்று
நீங்கள் DashO 2 தொகுத்தல், அது வால் மறுநிகழ்வு பார்க்கிறேன்
மற்றும் உகந்ததாக்க என்று.
அது திரும்பி செல்லலாம் - செருக உண்மையில் அது தேவை கடந்த விஷயம்.
இங்கு நுழைவு திரும்பி போகலாம்
நாம் ஒரே யோசனை செய்ய போகிறோம் அங்கு.
அது இன்னும் முழுமையாக கையாள முடியாத குறையை வேண்டும்
ரூட் தன்னை பூஜ்ய, அல்லது கடந்த நுழைவு, பூஜ்ய போது
ஆனால் அதற்கு பதிலாக ஒரு தாய் சுட்டிக்காட்டி கையாள்வது,
இந்த குறிப்புகள் என வைத்து சுட்டிகள் அதே தர்க்கம் பூசுகிறேன்.
இங்கே நாம், நம் முனை ** நடப்பு வைத்து
நாம், சரியான இனி கண்காணிப்பதற்கான தேவையில்லை
ஆனால் முனை ** நடப்பு = & மரம்.
இப்போது எங்கள் போது வளைய * நடப்பு சம பூஜ்ய இல்லை போது போகிறது.
இனி பெற்றோர்கள் கண்காணிக்க தேவையில்லை.
இடது மற்றும் வலது கண்காணிக்க தேவையில்லை.
நாம் ஏற்கனவே திறக்க பயன்படுத்தும் ஏனெனில் நான், அதை திறக்க அழைக்கிறேன்.
சரி. நீங்கள் (மதிப்பு> * temp),
பின்னர் & (* temp) -> உரிமை
வேறு திறக்க = & (* temp) -> விட்டு.
இப்போது, இந்த நேரத்தில், இந்த நேரத்தில் வளைய பின்னர்,
ஒருவேளை அதை பற்றி செயலாற்றலாலோ மறுசுழலில் விட என்று எளிதாக காரணம் நான் தான், இதை செய்ய
ஆனால் இந்த நேரத்தில் வளைய பின்னர்,
* திறக்க நாம் மாற்ற வேண்டும் சுட்டிக்காட்டி இருக்கிறது.
>> முன்னர், நாம் பெற்றோர் இருந்தது, மற்றும் நாம் பெற்றோர் இடது அல்லது பெற்றோர் சரி அல்லது மாற்ற வேண்டும்
ஆனால் நாம் பெற்றோர் உரிமை மாற்ற வேண்டும் என்றால்,
பின்னர் * திறக்க பெற்றோர் சரி, நாம் நேரடியாக அதை மாற்ற முடியும்.
அதனால் கீழே இங்கே, நாம் * திறக்க = newnode செய்ய முடியும், அவ்வளவு தான்.
அறிவிப்பு எனவே, நாம் இந்த செய்த அனைத்து குறியீடு வரிகளை எடுத்து இருந்தது.
கூடுதல் முயற்சி என்று அனைத்து பெற்றோர் கண்காணிக்க வேண்டும்.
இங்கே, நாங்கள் தான் முள்ளோடு சுட்டிக்காட்டி கண்காணிப்பதற்கான என்றால்,
நாம் இப்போது இந்த சுருள் ப்ரேஸ் பெற நினைத்தாலும்,
இது குறுகிய பார்க்க.
இந்த இப்போது, அதே தீர்வு
ஆனால் குறியீடு குறைந்த கோடுகள்.
நீங்கள், ஒரு சரியான தீர்வாக இந்த அங்கீகரித்து தொடங்க
அது சரி, இந்த மாதிரி விட சுமார் காரணம் எளிதாகவும்
நான் ஏன் எண்ணாக வலது இந்த கொடி இருக்கிறது?
இதற்கு என்ன அர்த்தம்? ஓ, அது குறிப்பிடும் அந்த
நான் போய் ஒவ்வொரு முறையும், நான், அதை அமைக்க வேண்டும்
நான் விட்டு சென்றால் வேறு நான் பூஜ்யம் அதை அமைக்க வேண்டும்.
இங்கே, நான் அது பற்றி காரணம் இல்லை; அதை பற்றி யோசிக்க மட்டும் எளிதாக இருக்கிறது.
கேள்விகள்?
[மாணவர், புரிந்து] >> சரி.
சரி, அதனால் கடந்த பிட் -
நான், நாம் என்ன செய்ய முடியும் ஒரு விரைவான மற்றும் எளிதான செயல்பாடு என்று நினைக்கிறேன்
let's - ஒன்றாக, நான் நினைக்கிறேன், ஒரு செயல்பாடு உள்ளது முயற்சி எழுத
அது ஒரு பைனரி தேடல் மரம் என்பதை இது கவலைப்படவில்லை.
இந்த செயல்பாடு உண்மை திரும்ப வேண்டும் கொண்டுள்ளது
நீங்கள் எங்கு இந்த பொது பைனரி ட்ரீ நாம் தேடும் மதிப்பு.
நாம் செயலாற்றலாலோ அதை செய்கிறேன், பின்னர் முதல் மறுசுழலில் அதை செய்ய வேண்டும்.
இந்த உண்மையில் குறுகிய இருக்கும், ஏனெனில் நாங்கள் உண்மையில் அதை ஒன்றாக செய்ய முடியும்.
>> என் தளத்தை வழக்கு என்ன செய்ய போகிறார்கள்?
[மாணவர், புரிந்து]
[Bowden] இருந்தால் (மரம் == NULL), பிறகு என்ன?
[மாணவர்] தவறான Return.
[Bowden] இல்லையென்றால், நன்றாக, நான் வேறு தேவையில்லை.
என் மற்ற அடிப்படை வழக்கில் இருந்தது.
[மாணவர்] மரம் மதிப்பு? >> சரி.
எனவே (மர> மதிப்பு == மதிப்பு என்றால்.
நாம் முனை ** கள், கணு * மீண்டும் அல்ல அறிவிப்பு?
கொண்டுள்ளது, ஒரு முனை ** பயன்படுத்த வேண்டும்
நாம் சுட்டிகள் மாற்றிய பின்னர்.
நாம் தான் அவர்களை கடக்கும்.
அது நடந்தால், நாம் உண்மையான திரும்ப வேண்டும்.
வேறு நாம் குழந்தைகள் நடந்தே செல்கிறார்கள் வேண்டும்.
நாம் இடது எல்லாவற்றையும் குறைவாக என்பதை பற்றி காரணம் முடியாது
வலது எல்லாவற்றையும் அதிகமாக உள்ளது.
அதனால் என்ன, நம் நிலை இங்கே இருக்கும் - அல்லது, நாம் என்ன செய்ய போகிறோம்?
[மாணவர், புரிந்து] >> சரி.
திரும்பி உள்ளது (மதிப்பு, மர> இடது)
அல்லது (மதிப்பு, மர> வலது) கொண்டுள்ளது. அவ்வளவு தான்.
மேலும், சில குறுகிய சுற்று மதிப்பீடு உள்ளது கவனிக்க
அங்கு நாம் இடது கிளையில் மதிப்பு காண நேர்ந்தால்,
நாம் சரியான மரத்தை பார் வேண்டும்.
முழு செயல்பாடு என்று.
இப்போது, செயலாற்றலாலோ அதை செய்வோம்
இது குறைந்த நன்றாக இருக்கும்.
நாம் முனை * நடப்பு = மரம் வழக்கமான தொடக்க எடுக்க வேண்டும்.
அதே நேரத்தில் (நடப்பு! = NULL).
விரைவில் ஒரு பிரச்சனை பார்க்க போகிறோம்.
அது நடப்பு - அவுட் இங்கே, நாங்கள் எப்போதும் இந்த உடைத்து என்றால்,
நாம் பார்க்க விஷயங்கள் ரன் அவுட், அதனால் தவறான திரும்ப.
(நடப்பு-> மதிப்பு == மதிப்பு), உண்மையான திரும்பி இருந்தால்.
எனவே இப்போது, நாம் ஒரு இடத்தில் இருக்கும் -
நாம் இடது அல்லது வலது செல்ல வேண்டும் என்று எனக்கு தெரியவில்லை.
எனவே தன்னிச்சையாக, தான் மட்டும் விட்டு செல்லலாம்.
நான் வெளிப்படையாக நான் முழுமையாக எல்லாவற்றையும் கைவிட்டு விட்டேன் அங்கு ஒரு சிக்கல் அந்த ரன் -
நான் மட்டும் எப்போதும் ஒரு மரத்தின் இடது பக்க பார்ப்பேன்.
நான் எதையும் ஒரு சரியான குழந்தை என்று எதையும் பார்க்க முடியாது.
நான் இதை எப்படி சரி செய்வது?
[மாணவர்] நீங்கள் ஒரு அடுக்கு இடது மற்றும் வலது கண்காணிக்க வேண்டும்.
[Bowden] சரி. எனவே அது செய்யலாம்
struct பட்டியலில், கணு * n, பின்னர் முனை ** அடுத்த?
நான் நன்றாக வேலை செய்கிறது என்று.
இங்கு - நாம் இடது, அல்லது let's மேல் செல்ல வேண்டும்.
Struct பட்டியல் பட்டியலில் =, அதை தொடங்க வேண்டும்
இந்த struct பட்டியலில் உள்ள அவுட்.
* பட்டியலில் = NULL. அதனால் எங்கள் இணைக்கப்பட்ட பட்டியலில் இருக்கும் நடக்கிறது
நாம் தவிர்க்கப்பட்டது என்று subtrees வேண்டும்.
நாம், இப்போது விட்டு பயணிக்கின்றன போகிறீர்கள்
ஆனால் நாம் தவிர்க்க முடியாமல் சரி வர வேண்டும் என்பதால்,
நாம் struct பட்டியல் உள்ளே வலது பக்க வைக்க போகிறோம்.
நாம், new_list அல்லது struct வேண்டும்
struct பட்டியலில் *, new_list = malloc (sizeof (பட்டியல்)).
நான் அந்த பிழை சோதனை புறக்கணிக்க போகிறேன், ஆனால் நீங்கள் அதை வெற்று பார்க்கவும் வேண்டும்.
அது சுட்டிக்காட்ட நடக்கிறது முனை New_list -
நான் இங்கே அதை பற்றி ஏன் ஓ, என்று. அது இரண்டாவது struct பட்டியலில் சுட்டிக்காட்ட நடக்கிறது.
அந்த பட்டியலை வேலை இணைக்கப்பட்ட மட்டும் எப்படி.
இந்த ஒரு முழு எண்ணாக இணைக்கப்பட்ட பட்டியலில் போல
தவிர, நாம் தான் முனை * உடன் எண்ணாக மாற்றுகிறோம்.
அது போலவே தான்.
எனவே new_list, எங்கள் new_list முனை மதிப்பு,
நடப்பு-> சரியாக போகிறது.
எங்கள் மதிப்பு new_list-> அடுத்த நமது உண்மையான பட்டியலில் இருக்கும்,
மற்றும் நாம் new_list சுட்டிக்காட்ட எங்கள் பட்டியலில் மேம்படுத்த போகிறோம்.
>> இப்போது நாம், இழுத்து விஷயங்கள் வழி ஒருவித வேண்டும்
நாம் முழு இடது உபப்படிநிலையின் செல்கிறது போன்ற.
இப்போது நாம், அது பொருட்களை வெளியே இழுக்க வேண்டும்
போன்ற நடப்பு பூஜ்ய, நாங்கள் தான் தவறான திரும்ப விரும்பவில்லை.
நாம் இப்போது நமது புதிய பட்டியலில் உள்ள வெளியே இழுக்க வேண்டும்.
இதை ஒரு எளிய வழி - நன்றாக, உண்மையில், இதை பல வழிகளில் உள்ளது.
யாராவது ஒரு யோசனை?
எங்கே நான் இந்த அல்லது எப்படி நான் இதை செய்ய வேண்டும் செய்ய வேண்டும்?
நாம் ஒரு ஜோடி நிமிடங்கள், ஆனால் எந்த பரிந்துரைகளை?
பதிலாக - ஒரு வழி, அதற்கு பதிலாக, எங்கள் நிலையை போது அவர்,
நாம் தற்போது தேடும், பூஜ்ய அல்ல
அதற்கு பதிலாக நாம் நம் பட்டியலில் தன்னை பூஜ்ய வரை செல்ல தொடர போகிறோம்.
எங்கள் பட்டியலில், பூஜ்ய இருப்பது நிறைவடைகிறது நீங்கள்
நாம், பார்க்க மீது தேட விஷயங்கள் ரன் அவுட்.
ஆனால் அந்த பட்டியலில் முதல் விஷயம் தான் முதல் முனை இருக்க போகிறது என்று அர்த்தம்.
முதல் காரியம் இருக்கும் - நாம் இனி பார்க்க வேண்டும்.
அதனால் பட்டியல்-> n எங்கள் மரம் இருக்கும்.
பட்டியல்-> அடுத்த பூஜ்ய போகிறது.
இப்போது பட்டியலில் சமமாக பூஜ்ய இல்லை போது.
நடப்பு எங்கள் பட்டியலில் இருந்து ஏதாவது இழுக்க வேண்டும்.
எனவே நடப்பு சம பட்டியல்-> n போகிறது.
பின்னர் பட்டியலில் சமமாக பட்டியல்-> n போகிறது, அல்லது பட்டியலில்-> அடுத்த.
நீங்கள் நடப்பு மதிப்பு சமம்.
இப்போது நாம் சரியான சுட்டிக்காட்டி நமது இடது சுட்டிக்காட்டி இரு சேர்க்க முடியும்
நீண்ட அவர்கள் பூஜ்ய அல்ல என்று.
இங்கு, நான் அந்த செய்திருக்க வேண்டும் நினைக்கிறேன் முதல் இடத்தில்.
நீங்கள் (நடப்பு-> சரி! = NULL)
நாம் நம் பட்டியலில் அந்த முனை நுழைக்க போகிறோம்.
நீங்கள் (நடப்பு-> இடது), இந்த கூடுதல் வேலை கொஞ்சம் இருக்கிறது, ஆனால் அது நல்லது.
நீங்கள் (நடப்பு-> இடது! = NULL),
நாம், நமது இணைக்கப்பட்ட பட்டியலில் இடது நுழைக்க போகிறோம்
மற்றும் அது இருக்க வேண்டும்.
நாங்கள் மீண்டும் கூறு - வரை நாங்கள் எங்கள் பட்டியலில் ஏதாவது என,
நாம் பார்க்க மற்றொரு முனை வேண்டும்.
எனவே, அந்த முனை பாருங்கள்
நாம் அடுத்த ஒரு நமது பட்டியலில் முன்னெடுத்து.
அந்த முனை நாம் தேடும் மதிப்பு இருந்தால், நாம் உண்மையான திரும்ப முடியும்.
வேறு, நம் இரு இடது மற்றும் வலது subtrees செருக
அவர்கள் பூஜ்ய அல்ல வரை, எங்கள் பட்டியலில்
நாம் தவிர்க்க முடியாமல் அவர்கள் மீது போய் அந்த.
அவர்கள் பூஜ்ய இல்லை, நீங்கள்
நமது ரூட் சுட்டிக்காட்டி இரண்டு விஷயங்களை சுட்டிக்காட்டி, என்றால்
எங்கள் பட்டியலில் பூஜ்ய இருப்பது நிறைவடைகிறது மிகவும் பின் முதலில் நாம் ஒன்றை வெளியே.
பின்னர் நாங்கள் மீண்டும் இரண்டு விஷயங்களை வைத்து, அதனால் இப்போது எங்கள் பட்டியலில் அளவு 2 ஆகும்.
, நாம் மீண்டும் சுழற்சி போகிறோம் நாம் தான் இழுக்க போகிறோம்
அது, நம் வேர் கணு இடது சுட்டிக்காட்டி சொல்கிறேன்.
என்று நான் நடந்து கொண்டே இருப்பேன்; நாம் எல்லாவற்றையும் தேடுகிறது முடிவுக்கு வேண்டும்.
>> இந்த குறிப்பிடத்தக்க இன்னும் சிக்கலான என்று அறிவிப்பு
சுழல்நிலை கரைசலில்.
நான் பல முறை சொல்லிவிட்டேன்
சுழல்நிலை தீர்வாக தீர்வு பங்கேற்பு பொதுவான அதிகம் என்று.
இங்கே இந்த சுழல்நிலை தீர்வு என்ன என்பதை துல்லியமாக என்ன.
ஒரே மாற்றம் என்று பதிலாக உட்குறிப்பாக ஸ்டேக் பயன்படுத்தி, நிரல் ஸ்டாக், இது
நீங்கள் இன்னும் பார்க்க வேண்டும் என்ன கணுக்களின் தடம் உங்கள் வழி,
இப்போது நீங்கள் வெளிப்படையாக ஒரு இணைக்கப்பட்ட பட்டியலில் பயன்படுத்த வேண்டும்.
என்ன முனை இன்னும் விஜயம் வேண்டும் இரண்டு சந்தர்ப்பங்களில் நீங்கள் தடம்.
சுழல்நிலை வழக்கில் அது எளிதாக இருக்கும் என்பதால் ஒரு அடுக்கு
நிரல் ஸ்டேக் நீ செயல்படுத்தப்பட்டது.
இந்த இணைக்கப்பட்ட பட்டியலில், ஒரு அடுக்கு என்பதை நீங்கள் கவனிக்க.
நாம் தான் ஸ்டாக் வைக்க என்ன
நாம் அடுத்த பார்க்க ஸ்டேக் இழுக்கவும் போகிறோம் என்ன உடனடியாக ஆகும்.
நாம் எந்த கேள்விகள் நேரம் போதவில்லை, ஆனால்?
[மாணவர், புரிந்து]
[Bowden] சரி. நாம் நமது இணைக்கப்பட்ட பட்டியலில் இல்லை என்றால்,
தற்போதைய, இந்த பையன் சுட்டி போகிறது
இப்போது நாம் இந்த பையன் கவனம் நமது இணைக்கப்பட்ட பட்டியலில் முன்னேறும்.
அந்த வரிசையில் இணைக்கப்பட்ட பட்டியலில் மேல் பயணித்து.
பின்னர் நாங்கள் இணைக்கப்பட்ட பட்டியலில் மற்றும் பொருட்களை விடுவிக்க வேண்டும் நினைக்கிறேன்
ஒருமுறை உண்மை அல்லது பொய் திரும்பும் முன், நாம் வேண்டும்
நமது இணைக்கப்பட்ட பட்டியலில் மீது மீண்டும் கூறு மற்றும் எப்போதும் கீழே இங்கே, நான் நினைக்கிறேன்
நாம் நடப்பு சரி சமமாக இல்லை என்றால், அதனால் இப்போது நாம் விடுவிக்க வேண்டும், அதை சேர்க்க
நடப்பு ஏனெனில், நன்றாக, நாம் முழுமையாக பட்டியல் மறந்துவிட்டீர்கள்? Yeah.
அதனால் நாம் இங்கு செய்ய வேண்டும்.
சுட்டிக்காட்டி எங்கே?
நடப்பு பிறகு தான் - நாம் ஒரு struct பட்டியலில் * 10 அடுத்த பட்டியலில் சமமாக வேண்டும்.
இலவச பட்டியல், பட்டியல் = temp.
மேலும் வழக்கில் நாம் உண்மையான திரும்பி அங்கு, நாம் மீண்டும் கூறு வேண்டும்
பொருட்களை பெறலாம் எங்கள் இணைக்கப்பட்ட பட்டியலில் எஞ்சிய மேல்.
சுழல்நிலை தீர்வு பற்றி நல்ல விஷயம் பொருட்களை பெறலாம்
உங்களுக்கு நடக்கும் எந்த ஸ்டேக் ஆஃப் உறுத்தும் factorings பொருள்.
நாம் கடினமான என்று-பற்றி குறியீடு 3 கோடுகள் போன்ற என்று ஒன்று இருந்து போயிருந்தேன்
குறிப்பிடத்தக்க பல என்று ஏதாவது கடினமான என்று-பற்றி குறியீடு கோடுகள்.
மேலும் எந்த கேள்விகளையும்?
எல்லாம் சரி. நாம் நல்ல இருக்கும். பாய்!
[CS50.TV]