1 00:00:00,000 --> 00:00:02,770 [Powered by Google Translate] [பகுதி 7: மேலும் வசதியான] 2 00:00:02,770 --> 00:00:05,090 [ராப் Bowden] [ஹார்வர்ட் பல்கலைக்கழகம்] 3 00:00:05,090 --> 00:00:07,930 [இந்த CS50 ஆகும்] [CS50.TV] 4 00:00:07,930 --> 00:00:10,110 எல்லாம் சரி. அதனால், நான் என் மின்னஞ்சல் கூறினார் போன்ற 5 00:00:10,110 --> 00:00:14,060 இந்த பைனரி மர தீவிர பிரிவு இருக்கும். 6 00:00:14,060 --> 00:00:16,820 ஆனால் பல கேள்விகள் இல்லை. 7 00:00:16,820 --> 00:00:18,920 நாம் முயற்சி மற்றும் ஒவ்வொரு கேள்விக்கும் அவுட் பெற போகிறோம் 8 00:00:18,920 --> 00:00:25,430 மற்றும் செய்யும் அனைத்து சிறந்த வழிகளில் வலி விவரம் போக. 9 00:00:25,430 --> 00:00:31,200 எனவே சரியான ஆரம்பத்தில், நாம் பைனரி மரங்கள் மற்றும் பொருட்களை மாதிரி வரைபடங்கள் மூலம் செல்ல. 10 00:00:31,200 --> 00:00:35,970 இங்கு, "ஒரு பைனரி மரம் ஒரு இணைக்கப்பட்ட பட்டியலில் போன்ற முனைகள் என்று நினைவில் 11 00:00:35,970 --> 00:00:38,150 இடது 'குழந்தை' ஒரு: பதிலாக ஒரு சுட்டிக்காட்டியின் தவிர இரண்டு உள்ளன 12 00:00:38,150 --> 00:00:41,950 வலது 'குழந்தை' ஒரு. " 13 00:00:41,950 --> 00:00:45,630 , ஒரு இணைக்கப்பட்ட பட்டியலில் போல் ஒரு பைனரி மரம் எனவே 14 00:00:45,630 --> 00:00:47,910 struct தவிர இரண்டு சுட்டிகள் வேண்டும் என்று. 15 00:00:47,910 --> 00:00:51,390 மூன்று சுட்டிகள் நடக்க போகிறது இது trinary மரங்கள், அங்கு 16 00:00:51,390 --> 00:00:56,540 ஒரு பொதுவான சுட்டிக்காட்டி கொண்ட N-ary மரங்கள் உள்ளன 17 00:00:56,540 --> 00:01:00,320 நீங்கள் வேண்டும் போதுமானதாக இருக்கும் malloc வேண்டும் என்று 18 00:01:00,320 --> 00:01:04,840 அனைத்து குழந்தைகள் போதுமான சுட்டிகள். 19 00:01:04,840 --> 00:01:08,200 எனவே பைனரி மரம் இரண்டு ஒரு நிலையான எண் வேண்டும் நடக்கிறது. 20 00:01:08,200 --> 00:01:11,260 நீங்கள் விரும்பினால், நீங்கள், ஒரு ஒரும மரம் ஒரு இணைக்கப்பட்ட பட்டியலில் கொடுக்க முடியும் 21 00:01:11,260 --> 00:01:15,360 ஆனால் நான் யாரையும் அந்த அழைப்பு நினைக்கவில்லை. 22 00:01:15,360 --> 00:01:18,060 "ஒரு பைனரி மரம் முனை ஒரு பெட்டிகள் மற்றும் அம்புகள் வரைபடம் வரையவும் 23 00:01:18,060 --> 00:01:24,110 ஒவ்வொரு குழந்தை சுட்டிக்காட்டி பூஜ்ய எங்கே நேட் பிடித்த எண், 7,. "கொண்ட 24 00:01:24,110 --> 00:01:27,780 எனவே ஐபாட் முறை. 25 00:01:27,780 --> 00:01:30,280 >> அது மிகவும் நேரடியான இருக்க போகிறது. 26 00:01:30,280 --> 00:01:36,150 நாம் ஒரு முனை போகிறது, நான் ஒரு சதுர அதை வரைய வேண்டும். 27 00:01:36,150 --> 00:01:38,730 நான் இங்கே உள்ள மதிப்புகள் வரைய வேண்டும். 28 00:01:38,730 --> 00:01:41,090 எனவே மதிப்பு, இங்கே உள்ள போம் 29 00:01:41,090 --> 00:01:44,770 பின்னர் கீழே இங்கே நாம் இடது இடது சுட்டிக்காட்டி மற்றும் வலது உரிமை சுட்டிக்காட்டி வேண்டும். 30 00:01:44,770 --> 00:01:50,430 இது இடது, வலது, சுட்டிக்காட்டி பெயர்கள் அழைக்க மாநாடு எனவே அது மிகவும் உள்ளது. 31 00:01:50,430 --> 00:01:52,460 இந்த இரு பூஜ்ய போகிறீர்கள். 32 00:01:52,460 --> 00:01:57,870 அது வெறும் வெற்று இருக்கும், மற்றும் அது வெறும் வெற்று இருக்கும். 33 00:01:57,870 --> 00:02:03,630 சரி. எனவே இங்கு செல்ல. 34 00:02:03,630 --> 00:02:05,700 "ஒரு இணைக்கப்பட்ட பட்டியலில் மூலம், நாம் ஒரு சுட்டிக்காட்டி சேமிக்க வேண்டும் 35 00:02:05,700 --> 00:02:09,639 முழு இணைக்கப்பட்ட பட்டியலில், அல்லது முழு பட்டியலை நினைவில் வைக்க பட்டியலில் முதல் முனை வேண்டும். 36 00:02:09,639 --> 00:02:11,650 இதேபோல், மரங்கள், நாம் மட்டும் சுட்டிக்காட்டி சேமிக்க வேண்டும் 37 00:02:11,650 --> 00:02:13,420 முழு மரம் நினைவில் பொருட்டு ஒரு ஒற்றை முனை வேண்டும். 38 00:02:13,420 --> 00:02:15,980 இந்த முனை மர 'ரூட்' CALLE உள்ளது. 39 00:02:15,980 --> 00:02:18,320 முன் உங்கள் வரைபடம் மீது கட்டமைக்க அல்லது ஒரு புதிய ஒரு வரைந்து 40 00:02:18,320 --> 00:02:21,690 நீங்கள் ஒரு பைனரி மரம் ஒரு பெட்டிகள் மற்றும் அம்புகள் சித்தரிப்பு என்று போன்ற 41 00:02:21,690 --> 00:02:25,730 இடது பின்னர் 3 மதிப்பு 7,, 42 00:02:25,730 --> 00:02:32,760 3 வலது பின் வலது 9, பின்னர் 6. " 43 00:02:32,760 --> 00:02:34,810 நான் என் தலையில் என்று அனைத்து நினைவில் என்றால் பார்க்கலாம். 44 00:02:34,810 --> 00:02:37,670 இந்த இங்கே நமது ரூட் வரை போகிறது. 45 00:02:37,670 --> 00:02:41,600 நாம், எங்காவது நாம் ரூட் அழைக்கிறேன் என்று ஏதோ சில சுட்டிக்காட்டி வேண்டும் 46 00:02:41,600 --> 00:02:45,140 இது இந்த நபர் என்று சுட்டி காட்டும். 47 00:02:45,140 --> 00:02:48,490 இப்போது ஒரு புதிய கணு செய்ய, 48 00:02:48,490 --> 00:02:52,870 நாம் இடது, 3 என்ன இருக்கிறது? 49 00:02:52,870 --> 00:02:57,140 3 ஒரு புதிய கணு எனவே, அது ஆரம்பத்தில் பூஜ்ய சுட்டிக்காட்டியுள்ளது. 50 00:02:57,140 --> 00:02:59,190 நான் என் வைக்கிறேன் 51 00:02:59,190 --> 00:03:02,250 இப்போது நாம் 7 இடது சென்று அந்த செய்ய வேண்டும். 52 00:03:02,250 --> 00:03:06,840 நாம் இப்போது இந்த பையன் சுட்டி இந்த சுட்டிக்காட்டி மாற்ற. 53 00:03:06,840 --> 00:03:12,420 நாம் அதே. நாம் இங்கு ஒரு 9 வேண்டும் 54 00:03:12,420 --> 00:03:14,620 இது ஆரம்பத்தில் வெறும் வெற்று என்கிறார். 55 00:03:14,620 --> 00:03:19,600 நாம், 9 இந்த சுட்டிக்காட்டி, புள்ளி மாற்ற போகிறோம் 56 00:03:19,600 --> 00:03:23,310 இப்போது நாங்கள் 3 வலது 6 வைக்க வேண்டும். 57 00:03:23,310 --> 00:03:32,170 எனவே இது நடக்கிறது - ஒரு 6 செய்யும். 58 00:03:32,170 --> 00:03:34,310 மற்றும் அந்த பையன் அங்கு மாம். 59 00:03:34,310 --> 00:03:38,320 சரி. அதனால் தான் அது செய்ய எங்களுக்கு கேட்கும். 60 00:03:38,320 --> 00:03:42,770 >> இப்போது தான் சில சொற்களை மீது செல்லலாம். 61 00:03:42,770 --> 00:03:46,690 நாம் ஏற்கனவே மரத்தின் வேர் கிளையில் மேல் மிகவும் முனை எப்படி பேசினார். 62 00:03:46,690 --> 00:03:54,720 ஒரு 7 கொண்டிருக்கும். மரத்தின் கீழே முனைகள் இலைகள் அழைக்கப்படுகின்றன. 63 00:03:54,720 --> 00:04:01,240 அதன் குழந்தைகள் என வெற்று கொண்ட எந்த முனை இலை. 64 00:04:01,240 --> 00:04:03,680 அது நம் பைனரி மரம் ஒரு ஒற்றை முனை என்றால், முடியும், 65 00:04:03,680 --> 00:04:10,130 ஒரு மரம் ஒரு இலை, அவ்வளவு தான் என்று. 66 00:04:10,130 --> 00:04:12,060 "மர 'உயரம்' நீங்கள் செய்ய வேண்டும் ஹாப்ஸ் எண்ணிக்கை 67 00:04:12,060 --> 00:04:16,620 மேலே இருந்து ஒரு இலை பெற. " 68 00:04:16,620 --> 00:04:18,640 நாம், ஒரு நொடியில், ஒரு வித்தியாசம் கிடைக்கும் 69 00:04:18,640 --> 00:04:21,940 சமச்சீர் மற்றும் ஏறுமாறான பைனரி மரங்கள் இடையே, 70 00:04:21,940 --> 00:04:29,470 இந்த மரத்தின் ஆனால் இப்போது, ஒட்டு மொத்த உயரம் 71 00:04:29,470 --> 00:04:34,520 நான், 3 என்று இருந்த போதிலும் நீங்கள் ஹாப்ஸ் எண்ணிக்கையை என்றால் 72 00:04:34,520 --> 00:04:39,710 நீங்கள் 9 பெறுவதற்காக செய்ய வேண்டும், அது உண்மையில் 2 மட்டுமே உயரம் தான். 73 00:04:39,710 --> 00:04:43,340 இப்போது இந்த, சமநிலையற்ற பைனரி மரம் 74 00:04:43,340 --> 00:04:49,840 இது தொடர்பான இருக்கும் வரும்போது ஆனால் நாம் சீரான பற்றி பேசினார். 75 00:04:49,840 --> 00:04:52,040 எனவே இப்போது நாம் வகையில் ஒரு மரம் முனைகளுக்கிடையே பற்றி பேசலாம் 76 00:04:52,040 --> 00:04:54,700 மரம் மற்ற முனைகளில் தொடர்புடைய. 77 00:04:54,700 --> 00:04:59,730 எனவே இப்போது நாம் பெற்றோர்கள், குழந்தைகள், உறவினர்கள், முன்னோர்கள், மற்றும் மரபினர் வேண்டும். 78 00:04:59,730 --> 00:05:05,650 அவர்கள் என்ன, அழகான பொதுவான உணர்வு இருக்கும். 79 00:05:05,650 --> 00:05:09,610 நாம் கேட்டால் - இது பெற்றோர்கள். 80 00:05:09,610 --> 00:05:12,830 அதனால் 3 பெற்றோர் என்ன? 81 00:05:12,830 --> 00:05:16,090 [மாணவர்கள்] 7. >> சரி. பெற்றோர் உங்களுக்கு சுட்டிக்காட்டினால் என்ன ஆக போகிறது. 82 00:05:16,090 --> 00:05:20,510 பின்னர் 7 குழந்தைகள் என்ன? 83 00:05:20,510 --> 00:05:23,860 [மாணவர்கள்] 3 மற்றும் 9. >> சரி. 84 00:05:23,860 --> 00:05:26,460 "குழந்தைகள்" உண்மையில் குழந்தைகள் என்று பாருங்கள், 85 00:05:26,460 --> 00:05:31,010 அது ஒரு பேர போல ஏனெனில் 6 எனவே, விண்ணப்பிக்க முடியாது. 86 00:05:31,010 --> 00:05:35,540 நாம் வழித்தோன்றல்கள் சென்றால் ஆனால் பின்னர், அதனால் 7 வம்சாவளிகள் என்ன? 87 00:05:35,540 --> 00:05:37,500 [மாணவர்கள்] 3, 6 மற்றும் 9. >> சரி. 88 00:05:37,500 --> 00:05:42,330 வேர் கணு வம்சாவளிகள், மரம் எல்லாம் இருக்கும் 89 00:05:42,330 --> 00:05:47,950 தவிர ஒருவேளை வேர் கணு தன்னை, நீங்கள் ஒரு சந்ததி கருத்தில் கொள்ள வேண்டும் என்றால். 90 00:05:47,950 --> 00:05:50,750 இறுதியாக, முன்னோர்கள், அது எதிர் திசையில் தான். 91 00:05:50,750 --> 00:05:55,740 எனவே 6 முன்னோர்கள் என்ன? 92 00:05:55,740 --> 00:05:58,920 [மாணவர்கள்] 3 மற்றும் 7. >> சரி. 9 சேர்க்கப்படவில்லை. 93 00:05:58,920 --> 00:06:02,520 அது ரூட் நேரடி பரம்பரையில் திரும்பி உள்ளது 94 00:06:02,520 --> 00:06:13,230 உங்கள் முன்னோர்கள் போகிறது. 95 00:06:13,230 --> 00:06:16,300 >> "நாங்கள், ஒரு பைனரி மரம் என்றால் மரம் ஒவ்வொரு முனையின் 'உத்தரவிட்டுள்ளது' என்று சொல்ல 96 00:06:16,300 --> 00:06:19,530 இடது அதன் சந்ததிகள் அனைத்து குறைந்த மதிப்புகள் வேண்டும் 97 00:06:19,530 --> 00:06:22,890 வலது ஒன்றை அனைத்து பெரிய மதிப்புகள் வேண்டும். 98 00:06:22,890 --> 00:06:27,060 எடுத்துக்காட்டாக, மேலே மரம் உத்தரவிட்டார் ஆனால் அது மட்டுமே சாத்தியம் உத்தரவிட்டார் ஏற்பாடு இல்லை. " 99 00:06:27,060 --> 00:06:30,180 நாம் அது கிடைக்கும், முன் 100 00:06:30,180 --> 00:06:36,420 ஒரு கட்டளையிட்டார் பைனரி மரம் ஒரு பைனரி தேடல் மரம் என்று அறியப்படுகிறது. 101 00:06:36,420 --> 00:06:38,660 இங்கே நாம், அது ஒரு கட்டளையிட்டார் பைனரி மரம் அழைப்பு வேண்டும் நடக்கும் 102 00:06:38,660 --> 00:06:41,850 ஆனால் நான் கேட்டதே இல்லை, அது, ஒரு கட்டளையிட்டார் பைனரி மரம் முன் என்று 103 00:06:41,850 --> 00:06:46,650 ஒரு வினாடி வினா நாம் தேடும் ரும மரத்தை வைத்து அதிக வாய்ப்பு உள்ளது. 104 00:06:46,650 --> 00:06:49,250 அவர்கள் ஒரு மற்றும் அதே, நீங்கள் 105 00:06:49,250 --> 00:06:54,580 அதை நீங்கள் பைனரி மரம் மற்றும் இரும தேடல் மரம் இடையே வேறுபாட்டை கண்டு முக்கியம். 106 00:06:54,580 --> 00:06:58,830 ஒரு பைனரி மரம் ஒரு மரம் என்று இரண்டு விஷயங்களை புள்ளிகள். 107 00:06:58,830 --> 00:07:02,120 ஒவ்வொரு முனையும் இரண்டு விஷயங்களை சுட்டி காட்டும். 108 00:07:02,120 --> 00:07:06,310 அதை சுட்டி காட்டும் என்று மதிப்புகள் பற்றி எந்த காரண உள்ளது. 109 00:07:06,310 --> 00:07:11,370 அது ஒரு பைனரி தேடல் மரம் என்பதால், எனவே, இங்கு போல் 110 00:07:11,370 --> 00:07:14,030 நாம், 7 நாம் சென்றால் விட்டு தெரியும் 111 00:07:14,030 --> 00:07:16,670 நாம் அது அடைய முடியும் என்று மதிப்புகள் அனைத்து 112 00:07:16,670 --> 00:07:19,310 7 விட்டு சென்று 7 விட குறைவாக இருக்க வேண்டும். 113 00:07:19,310 --> 00:07:24,070 குறைந்த 7 விட அனைத்து மதிப்புகள் 3 மற்றும் 6 என்பதை கவனித்து. 114 00:07:24,070 --> 00:07:26,040 அந்த 7 இடது உள்ளன. 115 00:07:26,040 --> 00:07:29,020 நாம் 7 வலது போனால், எல்லாம், 7 ஐ விட அதிகமாக இருக்க வேண்டும் 116 00:07:29,020 --> 00:07:33,220 எனவே 9 7 உரிமை உள்ளது, எனவே நாம் நல்ல இருக்கும். 117 00:07:33,220 --> 00:07:36,150 இந்த ஒரு பைனரி மரம் வழக்கு அல்ல 118 00:07:36,150 --> 00:07:40,020 வழக்கமான பைனரி ட்ரீ நாம் தான், இடது மேல், 7 மணிக்கு 3 முடியும் 119 00:07:40,020 --> 00:07:47,630 7 இடது 9; இல்லை தேவையில்லை மதிப்புகள் வரிசைப்படுத்தும் உள்ளது. 120 00:07:47,630 --> 00:07:56,140 இது கடினமான மற்றும் தேவையற்ற ஏனென்றால் இப்போது, நாம் உண்மையில், இதை செய்ய மாட்டேன் 121 00:07:56,140 --> 00:07:59,400 ஆனால் "நீங்கள் நினைக்க முடியும் என பல உத்தரவிட்டார் மரங்கள் பெற முயற்சி 122 00:07:59,400 --> 00:08:01,900 எண்கள் 7, 3, 9 பயன்படுத்தி, மற்றும் 6. 123 00:08:01,900 --> 00:08:06,800 தனிப்பட்ட ஏற்பாடுகள் எவ்வளவு உள்ளன? ஒவ்வொரு உயரம் என்ன? " 124 00:08:06,800 --> 00:08:10,480 >> நாம் ஒரு ஜோடி செய்வேன், ஆனால் முக்கிய யோசனை 125 00:08:10,480 --> 00:08:16,530 இந்த வழி இந்த மதிப்புகள் கொண்ட பைனரி மரத்தின் ஒரு தனிப்பட்ட பிரதிநிதித்துவம் உள்ளது. 126 00:08:16,530 --> 00:08:22,760 சில பைனரி 7 கொண்டிருக்கும் மரம், 3, 6, மற்றும் 9 நாம் தேவை இல்லை. 127 00:08:22,760 --> 00:08:25,960 மற்றொரு சாத்தியமான சரியான ஒன்று, ரூட் 3 இருக்க வேண்டும் 128 00:08:25,960 --> 00:08:30,260 இடது சென்று அதை 6 தான், இடது சென்று அதை 7 தான், 129 00:08:30,260 --> 00:08:32,730 இடது சென்று அதை 9 தான். 130 00:08:32,730 --> 00:08:36,169 ஒரு செய்தபின் கச்சிதமாக இரும தேடல் மரம். 131 00:08:36,169 --> 00:08:39,570 இது ஒரு இணைக்கப்பட்ட பட்டியலில் போல், ஏனெனில் இது, மிகவும் பயனுள்ளதாக இல்லை 132 00:08:39,570 --> 00:08:43,750 இந்த குறிப்புகள் அனைத்தும் வெறும் வெற்று இருக்கும். 133 00:08:43,750 --> 00:08:48,900 ஆனால் அது ஒரு சரியான மரம். அப்படியா? 134 00:08:48,900 --> 00:08:51,310 [மாணவர்] மதிப்புகள் வலது அதிகமாக இருக்கும் இல்லையா? 135 00:08:51,310 --> 00:08:56,700 அல்லது இது -? >> இந்த நான் வேறு வழி சென்று பொருள். 136 00:08:56,700 --> 00:09:00,960 மேலும் அங்கு - ஆமாம், அது அந்த மாற வேண்டும். 137 00:09:00,960 --> 00:09:07,770 9, 7, 6, 3. நல்ல ப. 138 00:09:07,770 --> 00:09:11,730 அது இன்னும் ஒரு பைனரி மரம் தேடல் செய்ய வேண்டும், என்ன நடக்க வேண்டும். 139 00:09:11,730 --> 00:09:15,650 எனவே இடது எல்லாம் எந்த முனை விட குறைவாக இருக்க வேண்டும். 140 00:09:15,650 --> 00:09:23,180 நாம் இப்போது, என்ன, இந்த 6 நகர்த்த மற்றும் இங்கே அதை வைத்து முடியும். 141 00:09:23,180 --> 00:09:26,880 இல்லை, நம்மால் முடியாது. நான் ஏன் என்று செய்து வைப்பது? 142 00:09:26,880 --> 00:09:35,350 செய்வோம் - இங்கு 6, இங்கே 7, 3 முதல் 6 புள்ளிகள் ஆகும். 143 00:09:35,350 --> 00:09:39,290 இது சரியான பைனரி தேடல் மரம். 144 00:09:39,290 --> 00:09:49,260 நான் ஒரு ஏற்பாட்டை கொண்டு வர முடியும் என்றால் நாம் பார்ப்போம் - நான் என்ன தவறு. 145 00:09:49,260 --> 00:09:52,280 சரி, சரி. இந்த மரம் மிகவும் என்ன தவறு? 146 00:09:52,280 --> 00:10:08,920 நான் ஏற்கனவே நீங்கள் ஏதோ தவறு இருக்கிறது என்று ஒரு குறிப்பை கொடுத்து நினைக்கிறேன். 147 00:10:08,920 --> 00:10:14,430 நான் ஏன் என்று செய்து வைப்பது? 148 00:10:14,430 --> 00:10:18,510 சரி. இந்த நியாயமான தெரிகிறது. 149 00:10:18,510 --> 00:10:22,590 நாம் ஒவ்வொரு முனையும் போது, 7 போல், பின்னர் 7 இடது இருக்கும் ஒரு 3. 150 00:10:22,590 --> 00:10:24,960 எனவே 3 வேண்டும், 3 வலது விஷயம் 6. 151 00:10:24,960 --> 00:10:27,750 நீங்கள் 6 பார் என்றால், 6 வலது விஷயம் 9 ஆகும். 152 00:10:27,750 --> 00:10:30,910 ஏன் இந்த சரியான பைனரி தேடல் மரம் அல்ல? 153 00:10:30,910 --> 00:10:36,330 [மாணவர்கள்] 9 7 இடது உள்ளது. >> சரி. 154 00:10:36,330 --> 00:10:43,710 அதை நீங்கள் ஒருவேளை 7 இடது சென்று அடைய முடியும் அனைத்து மதிப்புகள் 7 விட குறைவாக உண்மை இருக்க வேண்டும். 155 00:10:43,710 --> 00:10:49,120 நாம் 7 விட்டு சென்றால், நாங்கள் 3 பெற நாம் இன்னும் 6 பெற முடியும் 156 00:10:49,120 --> 00:10:52,520 நாம் இன்னும், 9 பெற, ஆனால் குறைவான 7 சென்று மூலம் செய்யலாம் 157 00:10:52,520 --> 00:10:55,070 நாம் 7 அதிகமாக என்று பல பெற முடியாது வேண்டும். 158 00:10:55,070 --> 00:10:59,830 எனவே இந்த சரியான பைனரி தேடல் மரம் அல்ல. 159 00:10:59,830 --> 00:11:02,330 >> என் சகோதரர் உண்மையில் ஒரு நேர்காணலில் கேள்வி இருந்தது 160 00:11:02,330 --> 00:11:07,760 என்று பரிசோதிக்கவும் ஏதாவது அடிப்படையில் இந்த, ஒரு குறியீடு இருந்தது 161 00:11:07,760 --> 00:11:10,500 ஒரு மரம் ஒரு பைனரி தேடல் மரம், என்று 162 00:11:10,500 --> 00:11:13,580 அதனால் அவர் முதல் விஷயம் தான் பார்க்க பார்க்க இருந்தது 163 00:11:13,580 --> 00:11:17,020 இடது மற்றும் வலது சரிதான், மற்றும் பிறகு அங்கு கீழே கூறு. 164 00:11:17,020 --> 00:11:19,700 ஆனால் நீங்கள் அப்படி செய்ய முடியாது; நீங்கள் கண்காணிக்க வேண்டும் 165 00:11:19,700 --> 00:11:22,550 நான் 7 விட்டு சென்று விட்டனர் என்று இப்போது அந்த உண்மை, 166 00:11:22,550 --> 00:11:26,340 இந்த உபப்படிநிலையின் எல்லாம் 7 விட குறைவாக இருக்க வேண்டும். 167 00:11:26,340 --> 00:11:28,430 சரியான வழிமுறை கண்காணிக்க வேண்டும் 168 00:11:28,430 --> 00:11:35,970 மதிப்புகள் சாத்தியமான உள்ளே விழும் என்று எல்லைக்கு 169 00:11:35,970 --> 00:11:38,360 நாம் அனைவரும் செல்ல மாட்டேன். 170 00:11:38,360 --> 00:11:41,630 ஒரு நல்ல மீண்டும் உறவு இல்லை 171 00:11:41,630 --> 00:11:44,810 நாம் அந்த போகவில்லையா, அல்லது நாம் அந்த முடியாது என்றாலும், 172 00:11:44,810 --> 00:11:47,030 உண்மையில் அங்கு எவ்வளவு வரையறுக்கும். 173 00:11:47,030 --> 00:11:53,180 எனவே அவர்கள் 14 உள்ளன. 174 00:11:53,180 --> 00:11:56,020 நீங்கள் அதை எப்படி யோசனை கணித, போல் 175 00:11:56,020 --> 00:11:59,770 நீங்கள், வேர் கணு இருக்கும் எந்த ஒற்றை ஒன்றை தேர்வு செய்யலாம் 176 00:11:59,770 --> 00:12:03,160 பின்னர் நான், வேர் கணு இருக்கும் 7 எடுக்க வேண்டும் 177 00:12:03,160 --> 00:12:08,150 பிறகு என் இடது முனை இருக்க முடியும் என்று சில எண்கள்,, என்ன, உள்ளன 178 00:12:08,150 --> 00:12:10,440 என் வலது முனைக்கு முடியும் என்று சில எண்கள் உள்ளன 179 00:12:10,440 --> 00:12:15,090 ஆனால் நான் மொத்த எண்ணிக்கையில், இடது செல்ல அளவு n என்றால் 180 00:12:15,090 --> 00:12:18,820 பிளஸ் சரியான செல்ல அளவு n - 1. 181 00:12:18,820 --> 00:12:26,130 எனவே மீதமுள்ள எண்கள், அவர்கள் இடது அல்லது வலது அல்லது செல்ல முடியும் வேண்டும். 182 00:12:26,130 --> 00:12:31,580 அது, நான் முதல் 3 வைத்து இருந்தால் எல்லாம் இடது செல்ல வேண்டும், என்று கடினமாக தெரிகிறது 183 00:12:31,580 --> 00:12:35,080 ஆனால் நான் 7 வைக்க வேண்டும் என்றால், சில விஷயங்களை இடது போக முடியும் மற்றும் சில விஷயங்களை சரி செய்ய முடியும். 184 00:12:35,080 --> 00:12:39,570 மற்றும் '3 முதல் 'நான் எல்லாவற்றையும் சரி போகலாம் என்று. 185 00:12:39,570 --> 00:12:42,350 இது தான், நீங்கள், அதை பற்றி யோசிக்க வேண்டும் 186 00:12:42,350 --> 00:12:47,980 எப்படி பல விஷயங்கள் மரத்தின் அடுத்த நிலை போகலாம். 187 00:12:47,980 --> 00:12:50,420 , அல்லது நீங்கள் எல்லோரும் பெற முடியும்; அது 14 இருக்கும் வருகிறது 188 00:12:50,420 --> 00:12:54,650 பிறகு 14 பெறுவீர்கள். 189 00:12:54,650 --> 00:13:01,120 >> இங்கே திரும்பி சென்று, 190 00:13:01,120 --> 00:13:03,510 நாம் அவர்களை மூலம் தேட முடியும் என்பதால், "ஆணையிட்டார் பைனரி மரங்கள் குளிர்ச்சியான இருக்கும் 191 00:13:03,510 --> 00:13:06,910 ஒரு வரிசைப்படுத்தப்பட்ட வரிசை தேட ஒரு மிகவும் ஒத்த விதத்தில். 192 00:13:06,910 --> 00:13:10,120 அவ்வாறு செய்ய, நாம் ரூட் துவங்க மற்றும் மரம் கீழே எங்கள் வழி வேலை 193 00:13:10,120 --> 00:13:13,440 இலைகள் நோக்கி, நாம் தேடும் மதிப்புகள் எதிராக ஒவ்வொரு கணு மதிப்பு சரி. 194 00:13:13,440 --> 00:13:15,810 தற்போதைய முனை மதிப்பு மதிப்பு குறைவாக இருந்தால் நாம், தேடுகிறீர்கள் 195 00:13:15,810 --> 00:13:18,050 நீங்கள் முனை உரிமை குழந்தை அடுத்த போக. 196 00:13:18,050 --> 00:13:20,030 இல்லையெனில், நீங்கள் முனை இடது குழந்தை சென்று. 197 00:13:20,030 --> 00:13:22,800 , சில நேரத்தில், நீங்கள் நீங்கள் தேடும் மதிப்பு கண்டுபிடிப்போம், அல்லது நீங்கள் ஒரு வெற்று ஒரு ரன் வேண்டும் 198 00:13:22,800 --> 00:13:28,520 மதிப்பு காட்டும் மரம் இல்லை. " 199 00:13:28,520 --> 00:13:32,450 நான் நாம் முன்னர் மரம் மீண்டும் வரைய வேண்டும்; ஒரு இரண்டாவது எடுக்க வேண்டும். 200 00:13:32,450 --> 00:13:38,280 ஆனால் நாங்கள் 6, 10, மற்றும் 1 கிளையில் என்பதை பார்க்க வேண்டும். 201 00:13:38,280 --> 00:13:49,180 அதனால் என்ன, 7, 9, 3, 6. சரி. 202 00:13:49,180 --> 00:13:52,730 நீங்கள் பார்க்க வேண்டும் எண்கள், நாம் 6 பார்க்க வேண்டும். 203 00:13:52,730 --> 00:13:55,440 இந்த எப்படி வழிமுறை என்ன? 204 00:13:55,440 --> 00:14:03,040 சரி, நாம் நம் மரம் சில ரூட் சுட்டிக்காட்டி இருக்கிறது. 205 00:14:03,040 --> 00:14:12,460 நாம் ரூட் சென்று கூறுவேன், நாம் தேடும் மதிப்பு சமமாக இந்த மதிப்பு? 206 00:14:12,460 --> 00:14:15,000 எனவே 6 தேடுகிறீர்கள், அதை சமமாக இல்லை. 207 00:14:15,000 --> 00:14:20,140 எனவே 6 7 குறைவாக உள்ளது, சரி, நாம் போகும், இப்போது நாம் சொல்ல. 208 00:14:20,140 --> 00:14:23,940 என்று நாம் இடது போக வேண்டும் அர்த்தம், அல்லது நாம் சரியான செல்ல விரும்புகிறீர்கள்? 209 00:14:23,940 --> 00:14:27,340 [மாணவர்] இடது. >> சரி. 210 00:14:27,340 --> 00:14:33,340 இது குறிப்பிடத்தக்க எளிதாகவும், நீங்கள் செய்ய வேண்டியது எல்லாம் மரம் ஒன்று சாத்தியமாகும் முனை வரைந்து 211 00:14:33,340 --> 00:14:37,760 பின்னர் நீங்கள் don't - உங்கள் தலையில் என்று முயற்சி பதிலாக, 212 00:14:37,760 --> 00:14:40,020 சரி, அது குறைவாக இருந்தால், நான், இடது சென்று வலது செல்ல 213 00:14:40,020 --> 00:14:43,030 இந்த படத்தை பார்த்து, அதை நான் இடது போக வேண்டும் என்று மிக தெளிவாக 214 00:14:43,030 --> 00:14:47,700 இந்த முனை நான் தேடிக்கொண்டிருக்கிறேன் என்று மதிப்பு அதிகமாக இருந்தால். 215 00:14:47,700 --> 00:14:52,600 எனவே இப்போது நான் 3 மணிக்கு தான், இடது சென்று. 216 00:14:52,600 --> 00:14:57,770 நான் வேண்டும் - 3, 6, இது நான் தேடிக்கொண்டிருக்கிறேன் மதிப்பு, குறைவாக உள்ளது. 217 00:14:57,770 --> 00:15:03,420 எனவே சரியான போய், இப்போது நான், 6 மணிக்கு முடிவடையும் 218 00:15:03,420 --> 00:15:07,380 இது நான் உண்மையாக திரும்பி நான், தேடிக்கொண்டிருக்கிறேன் மதிப்பு. 219 00:15:07,380 --> 00:15:15,760 நான் பார்க்க போகிறேன் அடுத்த மதிப்பு 10 ஆகும். 220 00:15:15,760 --> 00:15:23,230 சரி. ரூட் பின்பற்ற வேண்டும் - என்று துண்டித்து - 10 எனவே, இப்போது, போகிறது. 221 00:15:23,230 --> 00:15:27,670 இப்போது, 10 7 அதிகமாக இருக்கும், அதனால் நான் சரி பார்க்க வேண்டும். 222 00:15:27,670 --> 00:15:31,660 நான் இங்கு வந்து போகிறேன், 10, 9 விட போகிறது 223 00:15:31,660 --> 00:15:34,520 அதனால் நான் பார்க்க விரும்புகிறேன் போகிறேன். 224 00:15:34,520 --> 00:15:42,100 நான் இங்கு வந்து, ஆனால் இங்கு இப்போது நான் பூஜ்ய இருக்கிறேன். 225 00:15:42,100 --> 00:15:44,170 நான் வெற்று வெற்றி என்றால் நான் என்ன செய்வது? 226 00:15:44,170 --> 00:15:47,440 [மாணவர்] தவறான திரும்ப? >> சரி. நான் 10 கண்டுபிடிக்க முடியவில்லை. 227 00:15:47,440 --> 00:15:49,800 1 கிட்டத்தட்ட ஒரே வழக்கில் இருக்கும், 228 00:15:49,800 --> 00:15:51,950 தவிர அது சுண்டி வேண்டும் நடக்கிறது; தேடும் பதிலாக 229 00:15:51,950 --> 00:15:56,540 வலது பக்க கீழே, நான் இடது பக்க பார்த்து போகிறேன். 230 00:15:56,540 --> 00:16:00,430 >> இப்போது நான் உண்மையில் குறியீடு பெற நினைக்கிறேன். 231 00:16:00,430 --> 00:16:04,070 அங்கு இங்கே தான் - CS50 பயன்பாட்டிற்கான திறக்க மற்றும் அங்கு உங்கள் வழியில் செல்லவும், 232 00:16:04,070 --> 00:16:07,010 ஆனால் நீங்கள் இடத்தில் அதை செய்ய தான் முடியும். 233 00:16:07,010 --> 00:16:09,170 அது, ஒருவேளை இடத்தில் அதை செய்ய சரியான நேரம் 234 00:16:09,170 --> 00:16:13,760 நாம் இடத்தில் வேலை ஏனெனில். 235 00:16:13,760 --> 00:16:19,170 "முதலில் நாங்கள் எண்ணாக மதிப்புகள் கொண்ட பைனரி மரம் முனைக்கு ஒரு புதிய வகை வரையறை வேண்டும். 236 00:16:19,170 --> 00:16:21,400 கீழே typedef பாய்லர் பயன்படுத்தி, 237 00:16:21,400 --> 00:16:24,510 ஒரு பைனரி மரம் ஒரு முனை ஒரு புதிய வகை வரையறை உருவாக்க. 238 00:16:24,510 --> 00:16:27,930 நீங்கள் சிக்கிவிடும் என்று. . . "அபத்தம், அபத்தம், அபத்தம். சரி. 239 00:16:27,930 --> 00:16:30,380 எனவே இங்கே பாய்லர் வைத்து விட்டு, 240 00:16:30,380 --> 00:16:41,630 typedef struct முனை, மற்றும் கணு. சரி, சரி. 241 00:16:41,630 --> 00:16:44,270 எனவே நாம் நமது முனை உள்ள வேண்டும் போகிறோம் துறைகளில் என்ன? 242 00:16:44,270 --> 00:16:46,520 [மாணவர்] இரண்டு சுட்டிகள் பின்னர் முகப்பு மற்றும்? 243 00:16:46,520 --> 00:16:49,700 >> முகப்பு மதிப்பு, இரண்டு சுட்டிகள்? எப்படி நான் சுட்டிகள் எழுத? 244 00:16:49,700 --> 00:16:58,440 [மாணவர்] Struct. >> நான், ஆமாம், அப்படி struct முனை * விட்டு உள்ளே பெரிதாக்க வேண்டும் 245 00:16:58,440 --> 00:17:01,320 மற்றும் struct முனை * சரி. 246 00:17:01,320 --> 00:17:03,460 மேலும், கடந்த முறை இருந்து விவாதம் நினைவில் 247 00:17:03,460 --> 00:17:15,290 இந்த அர்த்தமற்றது என்று, இந்த, எந்த அர்த்தமும் 248 00:17:15,290 --> 00:17:18,270 இந்த அர்த்தமற்றது. 249 00:17:18,270 --> 00:17:25,000 இந்த ரிகர்ஸிவ் struct வரையறுக்கும் நோக்கில் அங்கு எல்லாம் வேண்டும். 250 00:17:25,000 --> 00:17:27,970 சரி, அது என்ன நம் மரம் போல் போகிறது என்று. 251 00:17:27,970 --> 00:17:37,670 நாம் ஒரு trinary மரம் செய்தால், பின் ஒரு முனை B1, B2, struct முனை * b3, எவ்வாறு இருக்கும் 252 00:17:37,670 --> 00:17:43,470 ப ஒரு கிளை உள்ளது - உண்மையில், நான் இன்னும் அதை, நடுத்தர, வலது, ஆனால் அதை விட்டு நான் கேள்விப்பட்டிருக்கிறேன். 253 00:17:43,470 --> 00:17:55,610 நாம் மட்டும் பைனரி பற்றி கவலை, மிக சரியான, இடது. 254 00:17:55,610 --> 00:17:59,110 "இப்போது மரத்தின் வேர் ஒரு உலக முனை * மாறி பிரகடனம்." 255 00:17:59,110 --> 00:18:01,510 எனவே நாம் அதை செய்ய போவதில்லை. 256 00:18:01,510 --> 00:18:08,950 விஷயங்களை சற்றே கடினமான மற்றும் மிகவும் பொதுவான அடைவதற்காக, 257 00:18:08,950 --> 00:18:11,570 நாங்கள் ஒரு உலக முனை மாறி முடியாது. 258 00:18:11,570 --> 00:18:16,710 அதற்கு பதிலாக, முக்கிய நாம், நமது முனை விஷயங்களை பிரகடனம் 259 00:18:16,710 --> 00:18:20,500 நாம் இயங்கும் தொடங்கும் போது, அந்த, அந்த கீழே பொருள் 260 00:18:20,500 --> 00:18:23,130 எங்கள் கொண்டுள்ளது செயல்பாடு மற்றும் நம் சேர்த்த செயல்பாடு, 261 00:18:23,130 --> 00:18:27,410 மாறாக நம் கொண்டுள்ளது மட்டும், இந்த உலக முனை மாறி பயன்படுத்தி 262 00:18:27,410 --> 00:18:34,280 நாம் அது செயல்படுத்த வேண்டும் என்று ஒரு வாதம் மரம் எடுத்து போகிறது. 263 00:18:34,280 --> 00:18:36,650 உலக மாறி கொண்ட விஷயங்கள் எளிதாக இருந்தது. 264 00:18:36,650 --> 00:18:42,310 நாம் விஷயங்களை கடினமாக செய்ய போகிறோம். 265 00:18:42,310 --> 00:18:51,210 இப்போது, தான் இந்த வகை செய்ய நான் ஒரு நிமிடம் அல்லது எடுத்து 266 00:18:51,210 --> 00:18:57,690 உள்ளே முக்கிய இந்த மரம் உருவாக்க வேண்டும், மற்றும் நீங்கள் செய்ய வேண்டும், எங்கே. 267 00:18:57,690 --> 00:19:04,530 முயற்சி மற்றும் உங்கள் முக்கிய செயல்பாடு இந்த மரம் கட்ட. 268 00:19:42,760 --> 00:19:47,610 >> சரி. எனவே நீங்கள் இன்னும் மரம் முழு வழி அமைக்க வேண்டும் இல்லை. 269 00:19:47,610 --> 00:19:49,840 ஆனால் யாரையும் நான் இழுக்க முடியும் ஏதாவது 270 00:19:49,840 --> 00:20:03,130 ஒரு பெரிய மரம் அமைக்க தொடங்க எப்படி காட்ட? 271 00:20:03,130 --> 00:20:08,080 [மாணவர்] யாரோ அசைத்தல், வெளியே முயற்சி. 272 00:20:08,080 --> 00:20:13,100 [Bowden] அவர்கள் மரம் கட்டுமான வசதியாக எவரும்? 273 00:20:13,100 --> 00:20:15,520 [மாணவர்] நிச்சயமாக. அதை செய்யவில்லை. பரவாயில்லை >>. நாம் தான் முடிக்க முடியும் - 274 00:20:15,520 --> 00:20:26,860 ஓ, அதை காப்பாற்ற முடியும்? ஹைய்யா. 275 00:20:26,860 --> 00:20:32,020 இங்கு நாம் - ஓ, நான் சற்று துண்டித்து விட்டேன். 276 00:20:32,020 --> 00:20:34,770 நான் காண்பிக்க? 277 00:20:34,770 --> 00:20:37,730 பெரிதாக்க, வெளியே உருட்டும். நான் ஒரு கேள்வி >>. >> சரி? 278 00:20:37,730 --> 00:20:44,410 [மாணவர்] நீங்கள் struct வரையறை போது, ஏதாவது துவக்கப்படும் போன்ற விஷயங்கள் இருக்கின்றன? 279 00:20:44,410 --> 00:20:47,160 [Bowden] இல்லை >> சரி. எனவே நீங்கள் துவக்க வேண்டும் - 280 00:20:47,160 --> 00:20:50,450 [Bowden] இல்லை ஒரு struct நீங்கள் வரையறுக்க போது, அல்லது நீங்கள் அறிவிக்கும் போது, 281 00:20:50,450 --> 00:20:55,600 இது முன்னிருப்பாக துவக்கப்படும்; நீங்கள் ஒரு முழு எண்ணாக அறிவிக்க என்றால் அது போல தான். 282 00:20:55,600 --> 00:20:59,020 அது போலவே தான். அதன் தனிப்பட்ட துறைகளில் ஒவ்வொரு போல் 283 00:20:59,020 --> 00:21:04,460 அது ஒரு குப்பை மதிப்பு இருக்க முடியும். ஒரு struct அல்லது அறிவிக்க - >> இது வரையறுக்க முடியும் 284 00:21:04,460 --> 00:21:07,740 அது ஒரு வகையில் அவர்களுக்கு துவக்க? 285 00:21:07,740 --> 00:21:13,200 [Bowden] ஆமாம். எனவே, குறுக்குவழி துவக்கும் தொடரியல் 286 00:21:13,200 --> 00:21:18,660 போன்ற போகிறது - 287 00:21:18,660 --> 00:21:22,200 நாம் இதை செய்ய இரண்டு வழிகள் உள்ளன. நான் அதை தொகுக்க வேண்டும் என்று 288 00:21:22,200 --> 00:21:25,840 நிச்சயமாக கணகண வென்ற சப்தம் செய்ய இந்த செய்கிறது. 289 00:21:25,840 --> 00:21:28,510 struct வருகிறது என்று வாதங்கள் பொருட்டு, 290 00:21:28,510 --> 00:21:32,170 இந்த சுருள் ப்ரேஸ்களை உள்ளே வாதங்கள் வரிசை என்று வைத்து. 291 00:21:32,170 --> 00:21:35,690 நீங்கள் 9 அதனை துவக்க வேண்டும், மற்றும் இடது இருந்தால் சரி, பூஜ்ய இருக்கும் பூஜ்ய மற்றும் 292 00:21:35,690 --> 00:21:41,570 இது, பூஜ்ய, பூஜ்ய 9 வேண்டும். 293 00:21:41,570 --> 00:21:47,890 , மாற்று, மற்றும் ஆசிரியர் இந்த இலக்கணத்தை பிடிக்காது 294 00:21:47,890 --> 00:21:50,300 அது, நான் ஒரு புதிய தொகுதி வேண்டும் நினைக்கிறார்கள் 295 00:21:50,300 --> 00:22:01,800 ஆனால் மாற்று ஒன்று போல் - 296 00:22:01,800 --> 00:22:04,190 இங்கே, நான் ஒரு புதிய வரியில் அதை போடுகிறேன். 297 00:22:04,190 --> 00:22:09,140 நீங்கள் வெளிப்படையாக சொல்ல முடியாது, நான் சரியான இலக்கணத்தை மறக்க. 298 00:22:09,140 --> 00:22:13,110 எனவே நீங்கள் வெளிப்படையாக, பெயர் அவர்களை, மற்றும் சொல்ல முடியும் 299 00:22:13,110 --> 00:22:21,570 . கேட்ச், அல்லது. மதிப்பு = 9,. இடது = NULL. 300 00:22:21,570 --> 00:22:24,540 நான் காற்புள்ளிகளை இருக்கும் இந்த தேவையை யோசிக்காமல். 301 00:22:24,540 --> 00:22:29,110 . சரியான = NULL, நீ என்ன இந்த வழி 302 00:22:29,110 --> 00:22:33,780 உண்மையில், struct வரிசை தெரிய வேண்டும் 303 00:22:33,780 --> 00:22:36,650 நீங்கள் இந்த வாசிப்பு போது, இது மிகவும் வெளிப்படையான தான் 304 00:22:36,650 --> 00:22:41,920 என்ன மதிப்பு துவக்கப்படும். 305 00:22:41,920 --> 00:22:44,080 >> இந்த விஷயங்களை ஒன்றாக நடக்கும் - 306 00:22:44,080 --> 00:22:49,100 எனவே, பெரும்பாலான, சி + + சி ஒரு மூலக்கணமாகும் 307 00:22:49,100 --> 00:22:54,160 நீங்கள் சி + +, மற்றும் தொகுக்க வேண்டும் அதை நகர்த்த, சி குறியீடு எடுத்து கொள்ளலாம். 308 00:22:54,160 --> 00:22:59,570 இந்த சி + + ஆதரிக்கவில்லை என்று விஷயங்களை ஒன்றாகும், அதனால் மக்கள் அதை செய்ய மாட்டார்கள். 309 00:22:59,570 --> 00:23:01,850 அந்த மக்கள் அதை செய்ய மாட்டார்கள் மட்டுமே காரணம் என்று நான், எனக்கு தெரியாது 310 00:23:01,850 --> 00:23:10,540 ஆனால் நான் அதை பயன்படுத்த தேவைப்படும் பட்சத்தில் சி + + மற்றும் நான் இந்த பயன்படுத்த முடியவில்லை வேலை தேவை. 311 00:23:10,540 --> 00:23:14,000 என்று ஏதோ மற்றொரு எடுத்துக்காட்டாக சி + + வேலை இல்லை 312 00:23:14,000 --> 00:23:16,940 எப்படி malloc, தொழில்நுட்ப ", வெற்றிடத்தை *" ஒரு கொடுக்கிறது 313 00:23:16,940 --> 00:23:20,200 ஆனால் நீங்கள், கரி * x = malloc என்ன சொல்ல முடியும் 314 00:23:20,200 --> 00:23:22,840 அது தானாகவே ஒரு எரிப்பதை * நடித்தார். 315 00:23:22,840 --> 00:23:25,450 அந்த தானியங்கி நடிகர் நடக்காது சி + +. 316 00:23:25,450 --> 00:23:28,150 தொகுக்க முடியாது, நீங்கள் வெளிப்படையாக சொல்ல வேண்டும் என்று 317 00:23:28,150 --> 00:23:34,510 கரி *, malloc, என்ன, ஒரு எரிப்பதை * அது நடிக்க வேண்டும். 318 00:23:34,510 --> 00:23:37,270 சி மற்றும் சி + + உடன்பட என்று பல விஷயங்களை, அங்கே இல்லை 319 00:23:37,270 --> 00:23:40,620 ஆனால் அந்த இரண்டு. 320 00:23:40,620 --> 00:23:43,120 எனவே நாம் இந்த இலக்கணத்தை செல்கிறேன். 321 00:23:43,120 --> 00:23:46,150 ஆனால் நாம் அந்த இலக்கணத்தை போகவில்லை என்றால், 322 00:23:46,150 --> 00:23:49,470 என்ன - இந்த தவறு இருக்கலாம்? 323 00:23:49,470 --> 00:23:52,170 [மாணவர்] நான் dereference அது தேவையில்லை? >> சரி. 324 00:23:52,170 --> 00:23:55,110 , அம்பு ஒரு உள்ளார்ந்த dereference என்று நினைவில் 325 00:23:55,110 --> 00:23:58,230 எனவே நாம் தான், ஒரு struct கையாளும் போது 326 00:23:58,230 --> 00:24:04,300 நாம் பயன்படுத்த வேண்டும். struct ஒரு துறையில் உள்ளே உள்ள பெற. 327 00:24:04,300 --> 00:24:07,200 நாம் அம்புக்குறி பயன்படுத்த மட்டுமே நேரம் நாம் செய்ய வேண்டும் போது தான் - 328 00:24:07,200 --> 00:24:13,450 நன்றாக, அம்பு ஆகும் - 329 00:24:13,450 --> 00:24:17,020 என்று நான் அம்புக்குறி பயன்படுத்தப்படும் அது பொருள் என்று என்ன. 330 00:24:17,020 --> 00:24:24,600 அனைத்து செய்திகள் வகையில், dereference இந்த, இப்போது நான் ஒரு struct இருக்கிறேன், மற்றும் நான் புலம் பெற முடியும். 331 00:24:24,600 --> 00:24:28,040 நேரடியாகவோ அல்லது dereference துறையில் பெற துறையில் கிடைக்கும் - 332 00:24:28,040 --> 00:24:30,380 நான் இந்த மதிப்பு இருக்க வேண்டும் என்று நினைக்கிறேன். 333 00:24:30,380 --> 00:24:33,910 ஆனால் இங்கே நான், ஒரு struct, ஒரு struct ஒரு சுட்டிக்காட்டி கையாள்வதில் 334 00:24:33,910 --> 00:24:38,780 அதனால் நான் அம்புக்குறி பயன்படுத்த முடியாது. 335 00:24:38,780 --> 00:24:47,510 ஆனால் ஒன்று இந்த மாதிரி நாம் அனைத்து முனைகளில் செய்ய முடியும். 336 00:24:47,510 --> 00:24:55,790 கடவுளே. 337 00:24:55,790 --> 00:25:09,540 இந்த 6, 7, மற்றும் 3 ஆகும். 338 00:25:09,540 --> 00:25:16,470 நாம் நமது மரம் கிளைகளை அமைக்க முடியாது, நாங்கள் 7 முடியும் - 339 00:25:16,470 --> 00:25:21,650 நாம், அதன் இடது 3 சுட்டி. 340 00:25:21,650 --> 00:25:25,130 எனவே எப்படி என்று நாம் செய்வது? 341 00:25:25,130 --> 00:25:29,320 [மாணவர்கள், புரிந்து] >> சரி. node3 முகவரி, 342 00:25:29,320 --> 00:25:34,170 நீங்கள் முகவரி இல்லை என்றால், பிறகு அது தொகுக்க முடியாது. 343 00:25:34,170 --> 00:25:38,190 ஆனால் இந்த அடுத்த முனைகளில் சுட்டிகளையும் என்று ஞாபகம். 344 00:25:38,190 --> 00:25:44,930 சரி, 9 நோக்கியிருக்க வேண்டும் 345 00:25:44,930 --> 00:25:53,330 3 6 வலது சுட்டி வேண்டும். 346 00:25:53,330 --> 00:25:58,480 நான் இந்த அனைத்து தொகுப்பு நினைக்கிறேன். எந்த கருத்துக்கள் அல்லது கேள்விகள்? 347 00:25:58,480 --> 00:26:02,060 [மாணவர், புரிந்து] ரூட் 7 ஆக போகிறது. 348 00:26:02,060 --> 00:26:08,210 நாம் தான் முனை சொல்ல முடியாது * PTR = 349 00:26:08,210 --> 00:26:14,160 அல்லது ரூட், = & node7. 350 00:26:14,160 --> 00:26:20,730 >> நம் தேவைகளுக்காக, நாம், நுழைவு கையாள்வதில் போகிறாய் 351 00:26:20,730 --> 00:26:25,490 எனவே நாம் இந்த பைனரி மரம் செருக ஒரு செயல்பாடு எழுத வேண்டும் போகிறாய் 352 00:26:25,490 --> 00:26:34,230 மற்றும் நுழைவு தவிர்க்க முடியாமல் இந்த மரம் ஒரு புதிய கணு உருவாக்க malloc அழைக்க போகிறார். 353 00:26:34,230 --> 00:26:36,590 எனவே விஷயங்கள் உண்மையில் ஒரு குளறுபடியான பெற போகிறோம் என்று சில முனைகள் 354 00:26:36,590 --> 00:26:38,590 ஸ்டேக்கில் தற்போது 355 00:26:38,590 --> 00:26:43,680 மற்றும் பிற முனைகளில் நாம் செருக போது குவியல் மீது முடிவுக்கு போகிறார்கள். 356 00:26:43,680 --> 00:26:47,640 இந்த செய்தபின் கச்சிதமாக இருக்கும், ஆனால் தான் காரணம் 357 00:26:47,640 --> 00:26:49,600 நாம் ஸ்டேக்கில் இதை செய்ய முடியும் என்று 358 00:26:49,600 --> 00:26:51,840 அது எங்களுக்கு தெரியும் என்று ஒரு திட்டமிடப்பட்டது எடுத்துக்காட்டு காரணம் 359 00:26:51,840 --> 00:26:56,360 மரம் 7, 3, 6, 9 ஆகிய அமைக்கப்படவேண்டும் வேண்டும். 360 00:26:56,360 --> 00:27:02,970 இந்த இல்லை என்றால், நாம் முதலில் malloc வேண்டும் என்று. 361 00:27:02,970 --> 00:27:06,160 நாம் ஒரு பிட் பிறகு பார்க்கலாம் என்று, நாம் malloc'ing. 362 00:27:06,160 --> 00:27:08,570 இப்போது அது, ஸ்டாக் வைக்க செய்தபின் நியாயமான தான் 363 00:27:08,570 --> 00:27:14,750 ஆனால் ஒரு malloc செயல்படுத்த இந்த மாற்ற வேண்டும். 364 00:27:14,750 --> 00:27:17,160 எனவே இந்த ஒவ்வொரு இப்போது ஒன்று போல் இருக்கும் 365 00:27:17,160 --> 00:27:24,240 கணு * node9 = malloc (sizeof (முனை)). 366 00:27:24,240 --> 00:27:28,040 இப்போது நாம் சோதனை செய்ய போகிறது. 367 00:27:28,040 --> 00:27:34,010 (== NULL node9) என்றால் - அந்த விரும்பவில்லை - 368 00:27:34,010 --> 00:27:40,950 1 திரும்பி, இப்போது அது ஒரு சுட்டிக்காட்டி ஏனெனில் நாம், node9-> செய்ய முடியும் 369 00:27:40,950 --> 00:27:45,300 மதிப்பு = 6, node9-> விட்டு = NULL, 370 00:27:45,300 --> 00:27:48,930 node9-> சரியான = NULL, 371 00:27:48,930 --> 00:27:51,410 நாம் அந்த முனைகளில் ஒவ்வொரு செய்ய போகிறது. 372 00:27:51,410 --> 00:27:57,490 எனவே அதற்கு பதிலாக, ஒரு தனி செயல்பாடு உள்ளே வைத்து விட்டு. 373 00:27:57,490 --> 00:28:00,620 நாம் அது முனை * build_node அழைப்பு 374 00:28:00,620 --> 00:28:09,050 இந்த நாங்கள் ஹஃப்மேன் கோடிங் வழங்கும் API கள் ஓரளவு ஒத்ததாகும். 375 00:28:09,050 --> 00:28:12,730 நாம் ஒரு மரம் நீ துவக்கி செயல்பாடுகளை கொடுக்க 376 00:28:12,730 --> 00:28:20,520 மற்றும் deconstructor அந்த மரங்கள் மற்றும் காடுகள் அதே இடம் "செயல்பாடுகளை". 377 00:28:20,520 --> 00:28:22,570 >> இங்கு நாம் ஒரு துவக்கி செயல்பாடு போகிறது 378 00:28:22,570 --> 00:28:25,170 இப்போது நமக்கு ஒரு முனை உருவாக்க. 379 00:28:25,170 --> 00:28:29,320 அதை சரியாக இந்த அழகான மிகவும் பார்க்க நடக்கிறது. 380 00:28:29,320 --> 00:28:32,230 நான் கூட சோம்பேறியாக சென்று, மாறி பெயரை மாற்ற 381 00:28:32,230 --> 00:28:34,380 node9 இனி எந்த அர்த்தமும் கூட. 382 00:28:34,380 --> 00:28:38,610 ஓ, நான் node9 மதிப்பு 6 இருந்திருக்க வேண்டும் என்று நினைக்கிறேன். 383 00:28:38,610 --> 00:28:42,800 இப்போது நாம் node9 திரும்ப முடியும். 384 00:28:42,800 --> 00:28:49,550 இங்கு நாம் பூஜ்ய திரும்ப வேண்டும். 385 00:28:49,550 --> 00:28:52,690 ஒவ்வொருவரும் உருவாக்க ஒரு முனை செயல்பாடு ஏற்று? 386 00:28:52,690 --> 00:28:59,780 எனவே இப்போது நாம் ஒரு குறிப்பிட்ட மதிப்பை மற்றும் பூஜ்ய சுட்டிகள் எந்த முனை உருவாக்க என்று அழைக்க முடியும். 387 00:28:59,780 --> 00:29:09,750 இப்போது நாங்கள் அந்த அழைக்க முடியும், நாம் முனை * node9 = build_node (9) செய்ய முடியும். 388 00:29:09,750 --> 00:29:25,810 மற்றும் செய்வோம். . . 389 00:29:25,810 --> 00:29:33,980 6, 3, 7, 6, 3, 7. 390 00:29:33,980 --> 00:29:39,330 இப்போது நாம், அதே சுட்டிகள் அமைக்க வேண்டும் 391 00:29:39,330 --> 00:29:42,470 இப்போது தவிர அனைத்தையும் சுட்டிகள் அடிப்படையில் ஏற்கனவே 392 00:29:42,470 --> 00:29:48,480 எனவே இனி முகவரி வேண்டும். 393 00:29:48,480 --> 00:29:56,300 சரி. அதனால் நான் என்ன செய்ய வேண்டும் கடைசி விஷயம் என்ன? 394 00:29:56,300 --> 00:30:03,850 நான் செய்யவில்லை என்று ஒரு பிழை சோதனை உள்ளது. 395 00:30:03,850 --> 00:30:06,800 கணு திரும்ப என்ன உருவாக்க? 396 00:30:06,800 --> 00:30:11,660 [மாணவர், புரிந்து] >> சரி. Malloc தவறினால், அது வெற்று தருகிறேன். 397 00:30:11,660 --> 00:30:16,460 அதனால் நான் lazily பதிலாக ஒவ்வொரு ஒரு நிலையில் செய்து இங்கே அதை கீழே போட போகிறேன். 398 00:30:16,460 --> 00:30:22,320 நீங்கள் (node9 == NULL, அல்லது - கூட எளிமையான, 399 00:30:22,320 --> 00:30:28,020 இது இல்லை என்றால் node9 ஆகும். 400 00:30:28,020 --> 00:30:38,310 என்றால் இல்லை node9, அல்லது node6, அல்லது node3, அல்லது node7 எனவே, 1 திருப்பி. 401 00:30:38,310 --> 00:30:42,850 ஒருவேளை நாம் malloc தோல்வி, அல்லது ஏதாவது அச்சிட வேண்டும். 402 00:30:42,850 --> 00:30:46,680 [மாணவர்] அதே பூஜ்ய சமமாக பொய்யா? 403 00:30:46,680 --> 00:30:51,290 [Bowden] ஏதாவதொன்று பூச்சியமாக மதிப்பு தவறானது. 404 00:30:51,290 --> 00:30:53,920 எனவே பூஜ்ய ஒரு பூஜ்யம் மதிப்பு. 405 00:30:53,920 --> 00:30:56,780 பூஜ்யம் பூஜ்யம் மதிப்பு. தவறான ஒரு பூஜ்யம் மதிப்பு. 406 00:30:56,780 --> 00:31:02,130 எந்த - அழகான மிகவும் மட்டும் 2 பூஜ்ய மதிப்புகள் பூஜ்ய மற்றும் பூஜ்ஜியமாக இருக்கும், 407 00:31:02,130 --> 00:31:07,900 தவறான பூஜ்யம் வரையறுக்கப்பட்ட ஒரு ஹாஷ் உள்ளது. 408 00:31:07,900 --> 00:31:13,030 நாம் உலக மாறி அறிவிக்க என்றால் கூட பொருந்தும். 409 00:31:13,030 --> 00:31:17,890 நாம் இங்கே முனை * ரூட் வரை இருக்கிறது, என்று 410 00:31:17,890 --> 00:31:24,150 பின் - உலக மாறிகள் பற்றி நல்ல விஷயம் அவர்கள் எப்போதும் ஆரம்ப மதிப்பு என்று. 411 00:31:24,150 --> 00:31:27,500 செயல்பாடுகளின் உண்மை இல்லை, எப்படி உள்ளே இங்கிருந்து, 412 00:31:27,500 --> 00:31:34,870 நாம் இருந்தால், போன்ற, கணு * அல்லது கணு x. 413 00:31:34,870 --> 00:31:37,380 நாங்கள் யோசனை என்ன x.value, x.whatever, வேண்டும் 414 00:31:37,380 --> 00:31:40,700 அல்லது நாம் அவர்களை அச்சிட முடியும் அவர்கள் தன்னிச்சையாக இருக்க முடியும். 415 00:31:40,700 --> 00:31:44,980 உலக மாறிகளின் உண்மை இல்லை. 416 00:31:44,980 --> 00:31:47,450 அதனால் முனை ரூட் அல்லது கணு x. 417 00:31:47,450 --> 00:31:53,410 முன்னிருப்பாக, உலக என்று எல்லாம், இல்லை என்றால் வெளிப்படையாக, சில மதிப்பு துவக்கப்படும் 418 00:31:53,410 --> 00:31:57,390 அதன் மதிப்பு ஒரு பூஜ்ஜியம் மதிப்பை கொண்டுள்ளது. 419 00:31:57,390 --> 00:32:01,150 இங்கு, கணு * ரூட், நாம் வெளிப்படையாக, எதையும் துவக்க கூடாது 420 00:32:01,150 --> 00:32:06,350 அதன் முன்னிருப்பு மதிப்பு சுட்டிகள் பூஜ்யம் மதிப்பு என்பது, பூஜ்ய இருக்கும். 421 00:32:06,350 --> 00:32:11,870 x முன்னிருப்பு மதிப்பு, x.value பூஜ்யம் என்று அர்த்தம் என்ன 422 00:32:11,870 --> 00:32:14,260 x.left பூஜ்ய, மற்றும் x.right பூஜ்ய உள்ளது. 423 00:32:14,260 --> 00:32:21,070 அது ஒரு struct இருக்கும் என்பதால், struct துறைகளில் அனைத்து பூஜ்ய மதிப்புகள் இருக்கும். 424 00:32:21,070 --> 00:32:24,410 நாம் என்றாலும், அந்த இங்கே பயன்படுத்த தேவையில்லை. 425 00:32:24,410 --> 00:32:27,320 [மாணவர்] structs மற்ற மாறிகள் விட வித்தியாசமாக இருக்கிறது, மற்றும் பிற காரணிகள் ஆகும் 426 00:32:27,320 --> 00:32:31,400 குப்பை மதிப்புகள்; இந்த பூஜ்ஜியங்களாக இருக்கும்? 427 00:32:31,400 --> 00:32:36,220 மிகவும் [Bowden] பிற மதிப்புகளை. எனவே x இல், x பூஜ்ஜியமாக இருக்கும். 428 00:32:36,220 --> 00:32:40,070 உலக நோக்கம் என்று இருந்தால், அது ஒரு ஆரம்ப மதிப்பு உள்ளது. சரி >>. 429 00:32:40,070 --> 00:32:48,950 [Bowden] ஒன்று நீங்கள் அல்லது பூஜ்யம் கொடுத்தார் ஆரம்ப மதிப்பு. 430 00:32:48,950 --> 00:32:53,260 நான் இந்த அனைத்து காப்பாற்றுகிறாள் என்று. 431 00:32:53,260 --> 00:32:58,390 >> சரி. எனவே கேள்வி அடுத்த பகுதி, கேட்கும் 432 00:32:58,390 --> 00:33:01,260 "இப்போது நாம் இருக்கும் என்று ஒரு செயல்பாடு எழுத வேண்டும் 433 00:33:01,260 --> 00:33:04,930 bool ஒரு ப்ரோட்டோடைப் int மதிப்பை கொண்டுள்ளது. " 434 00:33:04,930 --> 00:33:08,340 நாம் bool int மதிப்பை கொண்டுள்ளது செய்ய போவதில்லை. 435 00:33:08,340 --> 00:33:15,110 எங்கள் முன்மாதிரி இருக்க போகிறது 436 00:33:15,110 --> 00:33:22,380 bool (int மதிப்பை கொண்டுள்ளது. 437 00:33:22,380 --> 00:33:24,490 மற்றும் நாம் அதை மரம் கடந்து போகிறாய் 438 00:33:24,490 --> 00:33:28,870 அது அந்த மதிப்பு உள்ளது என்பதை சோதனை என்று. 439 00:33:28,870 --> 00:33:38,290 அதனால் முனை * மரம்). சரி. 440 00:33:38,290 --> 00:33:44,440 பின்னர் நாம், போன்ற ஏதாவது அதை அழைக்க முடியும் 441 00:33:44,440 --> 00:33:46,090 ஒருவேளை நாம் printf அல்லது ஏதாவது வேண்டும் என்று நான் நினைக்கிறேன். 442 00:33:46,090 --> 00:33:51,040 6, நமது ரூட் கொண்டுள்ளது. 443 00:33:51,040 --> 00:33:54,300 ஒரு, அல்லது உண்மை, திரும்ப வேண்டும் என்று 444 00:33:54,300 --> 00:33:59,390 கொண்டுள்ளது, அதே சமயம் 5 ரூட் தவறான திரும்ப வேண்டும். 445 00:33:59,390 --> 00:34:02,690 இந்த செயல்படுத்த இரண்டாவது எடுத்து. 446 00:34:02,690 --> 00:34:06,780 நீங்கள் பல் செயலாற்றலாலோ அல்லது மீண்டும் மீண்டும் அதை செய்ய முடியும். 447 00:34:06,780 --> 00:34:09,739 நாம் விஷயங்களை அமைக்க நான் வழி பற்றி நல்ல விஷயம் என்று 448 00:34:09,739 --> 00:34:12,300 இது மிகவும் எளிதாக நம் சுழல்நிலை தீர்வு தன்னை வைப்பார் 449 00:34:12,300 --> 00:34:14,719 உலக-மாறி வழி விட. 450 00:34:14,719 --> 00:34:19,750 நாம் மட்டும் இருந்தால் int மதிப்பை கொண்டுள்ளது, ஏனெனில், நாம் subtrees கீழே recursing வழி ஏதுமில்லை. 451 00:34:19,750 --> 00:34:24,130 நாம் நமக்கு subtrees கீழே recurses என்று ஒரு தனி உதவி செயல்பாடு வேண்டும். 452 00:34:24,130 --> 00:34:29,610 ஆனால் நாம் மாறிவிட்டேன் இருந்து, ஒரு விவாதம் மரம் எடுத்து 453 00:34:29,610 --> 00:34:32,760 இது எப்போதும் முதல் இடத்தில் உள்ளது 454 00:34:32,760 --> 00:34:35,710 இப்போது நாம் தொடரை எளிதாக முடியும். 455 00:34:35,710 --> 00:34:38,960 எனவே பங்கேற்பு அல்லது சுழல்நிலை, நாங்கள் இருவரும் மேல் போகலாம் 456 00:34:38,960 --> 00:34:46,139 ஆனால் நாம் மிக எளிதாக அந்த சுழல்நிலை முனைகளிலும் பார்க்கிறேன். 457 00:34:59,140 --> 00:35:02,480 சரி. யாரையும் நாங்கள் வேலை செய்ய ஏதாவது உள்ளதா? 458 00:35:02,480 --> 00:35:12,000 >> [மாணவர்] நான் ஒரு தீர்வு பங்கேற்பு கிடைத்துவிட்டது. >> சரி, பங்கேற்பு. 459 00:35:12,000 --> 00:35:16,030 சரி, இந்த நல்ல தெரிகிறது. 460 00:35:16,030 --> 00:35:18,920 அதனால், இது வரை நாம் நடக்க வேண்டும்? 461 00:35:18,920 --> 00:35:25,780 [மாணவர்] நிச்சயமாக. அதனால் நான் மரம் முதல் முனை பெற ஒரு திறக்க மாறி அமைக்க. 462 00:35:25,780 --> 00:35:28,330 பின்னர் நான், temp சம பூஜ்ய இல்லை போது மூலம் சுருக்கிடப்படுகிறது 463 00:35:28,330 --> 00:35:31,700 எனவே மரம் இருந்த நான் நினைக்கிறேன். 464 00:35:31,700 --> 00:35:35,710 மதிப்பு சமமாக இருந்தால் மற்றும் temp, சுட்டி காட்டியது என்று 465 00:35:35,710 --> 00:35:37,640 அது அந்த மதிப்பினை கொடுக்கிறது. 466 00:35:37,640 --> 00:35:40,210 வலது பக்க அல்லது இடது புறத்தில், இல்லையெனில், அது சரிபார்க்கிறது. 467 00:35:40,210 --> 00:35:43,400 நீங்கள் இதுவரை எந்த மரம் அங்கு தான் ஒரு சூழ்நிலை கிடைக்கும், என்று 468 00:35:43,400 --> 00:35:47,330 அது வெளியேறும் சுழற்சி மற்றும் தவறான கொடுக்கிறது - அது கொடுக்கிறது. 469 00:35:47,330 --> 00:35:52,190 [Bowden] சரி. அதனால் நல்ல தெரிகிறது. 470 00:35:52,190 --> 00:35:58,470 யாரும் எதையும் எந்த கருத்து உள்ளது? 471 00:35:58,470 --> 00:36:02,400 எனக்கு சரியான கருத்து இல்லை. 472 00:36:02,400 --> 00:36:11,020 நாம் என்ன செய்ய முடியும் ஒன்று இந்த பையன். 473 00:36:11,020 --> 00:36:21,660 ஓ, இது ஒரு சிறிய ஓரளவு நீண்ட செல்ல நடக்கிறது. 474 00:36:21,660 --> 00:36:33,460 நான் அதை பார்த்துக்கொள்கிறேன். சரி. 475 00:36:33,460 --> 00:36:37,150 >> அனைவருக்கும் மும்மை எவ்வாறு நினைவில் வைத்து கொள்ள வேண்டும். 476 00:36:37,150 --> 00:36:38,610 நிச்சயமாக கடந்த காலத்தில் அங்கு வினாடி வினாக்கள் 477 00:36:38,610 --> 00:36:41,170 என்று, நீ ஒரு மும்மை ஆபரேட்டர் ஒரு செயல்பாடு கொடுக்க 478 00:36:41,170 --> 00:36:45,750 மற்றும் மும்மை பயன்படுத்த கூடாது என்று ஏதாவது செய்ய வேண்டும், இந்த மொழிபெயர்க்க. 479 00:36:45,750 --> 00:36:49,140 நான் மும்மை பயன்படுத்த நினைக்கிறேன் என்று இந்த ஒரு பொதுவான விஷயம், 480 00:36:49,140 --> 00:36:54,610 சில நிலையில் ஏதோ ஒரு மாறி அமைக்க, அங்கு என்றால் 481 00:36:54,610 --> 00:36:58,580 வேறு வேறு என்று அதே மாறி அமைக்க. 482 00:36:58,580 --> 00:37:03,390 மிகவும் அடிக்கடி தான் இந்த வகையான மாற்றப்பட்டு முடியும் என்று ஏதோ என்று 483 00:37:03,390 --> 00:37:14,420 இந்த என்று மாறி அமைக்க - அல்லது, நன்றாக, இது உண்மையா? இந்த, வேறு இந்த. 484 00:37:14,420 --> 00:37:18,550 [மாணவர்] முதல் ஒரு உண்மையான, சரியான என்றால் என்ன? 485 00:37:18,550 --> 00:37:25,570 [Bowden] சரி. நான் எப்போதும் அதை படிக்க வழி, திறக்க, திறக்க மதிப்பு அதிகமாக மதிப்பு சமம் 486 00:37:25,570 --> 00:37:30,680 இந்த, வேறு இந்த. இது ஒரு கேள்வி கேட்கிறாள். 487 00:37:30,680 --> 00:37:35,200 இது மிக மிக அதிகமாக இருக்கிறது? பின்னர் முதல் காரியம். வேறு இரண்டாவது காரியம். 488 00:37:35,200 --> 00:37:41,670 நான் எப்போதும் - பெருங்குடல், நான் - என் தலையில், நான் வேறு வாசிக்க. 489 00:37:41,670 --> 00:37:47,180 >> யாராவது ஒரு சுழல்நிலை தீர்வு உள்ளதா? 490 00:37:47,180 --> 00:37:49,670 சரி. நாங்கள் போகிறோம், இந்த ஒரு - அது ஏற்கனவே, பெரும் முடியும் 491 00:37:49,670 --> 00:37:53,990 ஆனால் நாம் இன்னும் நன்றாக செய்ய போகிறோம். 492 00:37:53,990 --> 00:37:58,720 இந்த அழகான அதே சரியான யோசனை. 493 00:37:58,720 --> 00:38:03,060 அது மட்டுமல்ல, நன்றாக, நீங்கள் விளக்க வேண்டும்? 494 00:38:03,060 --> 00:38:08,340 [மாணவர்] நிச்சயமாக. எனவே, மரம் முதல் null என்று உறுதி செய்கிறாய் 495 00:38:08,340 --> 00:38:13,380 மரம் பூஜ்ய இருந்தால் அது நாம் இல்லை ஏனெனில் தவறான திரும்ப நடக்கிறது என்பதால். 496 00:38:13,380 --> 00:38:19,200 ஒரு மரம் இன்னும் இருந்தால், நாம் போக - மதிப்பு தற்போதைய முனை என்றால் நாம் முதலில் பார்க்க. 497 00:38:19,200 --> 00:38:23,740 அது இருந்தால் உண்மை திரும்பி, மற்றும் இடது அல்லது வலது என்றால் நாம் தொடரை. 498 00:38:23,740 --> 00:38:25,970 அந்த ஒலி பொருத்தமான செய்கிறது? >> MM-இருகிறது. (ஒப்பந்தம்) 499 00:38:25,970 --> 00:38:33,880 இந்த கிட்டத்தட்ட என்பதை நீங்கள் கவனிக்க - பங்கேற்பு தீர்வு கட்டமைப்புரீதியாக மிகவும் ஒத்த. 500 00:38:33,880 --> 00:38:38,200 அதை பதிலாக recursing, நாம் ஒரு வளையம் என்று மட்டும் தான். 501 00:38:38,200 --> 00:38:40,840 மரம் சம பூஜ்ய இல்லை அங்கு இங்கு அடிப்படை வழக்கு 502 00:38:40,840 --> 00:38:44,850 நாம் அதே சுழற்சியில் வெடித்தது கீழ் நிலை இருந்தது. 503 00:38:44,850 --> 00:38:50,200 அவர்கள் மிகவும் ஒத்த இருக்கும். ஆனால் நாம் இன்னும் ஒரு படி எடுத்து செல்கிறோம். 504 00:38:50,200 --> 00:38:54,190 இப்போது, நாம் இங்கே அதையே செய்வார்கள். 505 00:38:54,190 --> 00:38:57,680 நாம் இந்த வரிகளை இருவரும் அதே விஷயத்தை மீண்டும் நீங்கள் கவனிக்கவில்லையா, 506 00:38:57,680 --> 00:39:00,220 தவிர ஒரு வாதம் வேறு. 507 00:39:00,220 --> 00:39:07,950 எனவே நாம் ஒரு மும்மை அந்த போகிறாய். 508 00:39:07,950 --> 00:39:13,790 நான் விருப்பத்தை ஏதாவது பாதிப்பு, மற்றும் அது ஒரு சின்னமாக இருந்தது. சரி. 509 00:39:13,790 --> 00:39:21,720 நாம் திரும்பி செல்கிறோம் என்று உள்ளது. 510 00:39:21,720 --> 00:39:28,030 இந்த அது உள்ள காண்பிக்க, நன்றாக, பல கோடுகள் இருக்கும் வருகிறது. 511 00:39:28,030 --> 00:39:31,060 பொதுவாக, ஒரு நவீனமான ஒன்று என, நான் பல மக்கள் நினைக்கவில்லை 512 00:39:31,060 --> 00:39:38,640 அம்புக்குறி பின்னர் ஒரு இடத்தில் வைத்து, ஆனால் நான் தொடர்ச்சியாக என்றால், அது நல்லது என்று நினைக்கிறேன். 513 00:39:38,640 --> 00:39:44,320 மதிப்பு மரம் மதிப்பு குறைவாக இருந்தால், நாம், மரம் இடது தொடரை வேண்டும் 514 00:39:44,320 --> 00:39:53,890 வேறு நாங்கள் மரம் வலது தொடரை வேண்டும். 515 00:39:53,890 --> 00:39:58,610 அதனால் இந்த தோற்றத்தை சிறிய செய்யும் படி இருந்தது. 516 00:39:58,610 --> 00:40:02,660 இந்த தோற்றம் சிறிதாக்குவதோடு இரண்டு படி - 517 00:40:02,660 --> 00:40:09,150 நாம் பல வழிகளில் இந்த பிரிக்க முடியாது. 518 00:40:09,150 --> 00:40:16,500 சரி. அது சிறிய பார்க்க செய்யும் படி இரண்டு, இங்கே 519 00:40:16,500 --> 00:40:25,860 எனவே மீண்டும் மதிப்பு மரம் மதிப்பு சமம், அல்லது என்ன கொண்டுள்ளது. 520 00:40:25,860 --> 00:40:28,340 >> இது ஒரு முக்கியமான விஷயம். 521 00:40:28,340 --> 00:40:30,860 அவர் அதை வர்க்கத்தின் வெளிப்படையாக கூறினார் நான், நிச்சயமாக இல்லை 522 00:40:30,860 --> 00:40:34,740 ஆனால் அது குறுகிய சுற்று மதிப்பீடு என. 523 00:40:34,740 --> 00:40:41,060 இங்கே கருத்து மதிப்பு == மரம் மதிப்பு. 524 00:40:41,060 --> 00:40:49,960 உண்மை இருந்தால், இந்த உண்மை, நாங்கள் விரும்பவில்லை 'அல்லது' என்று இங்கு என்ன இருக்கிறது. 525 00:40:49,960 --> 00:40:52,520 அதனால் கூட இங்கு என்ன பற்றி சிந்திக்காமல், 526 00:40:52,520 --> 00:40:55,070 திரும்பி முழு வெளிப்பாடு என்ன? 527 00:40:55,070 --> 00:40:59,430 [மாணவர்] பகல்? >> ஆமாம், ஏனெனில் எதுவும் உண்மை, 528 00:40:59,430 --> 00:41:04,990 or'd - எதையும் அல்லது உண்மை or'd அவசியம் உண்மைதான். 529 00:41:04,990 --> 00:41:08,150 எனவே விரைவில் நாம் மீண்டும் மதிப்பு = மரத்தின் மதிப்பு, பார்க்க போன்ற 530 00:41:08,150 --> 00:41:10,140 நாங்கள் தான் உண்மையான திரும்ப போகிறோம். 531 00:41:10,140 --> 00:41:15,710 கூட தொடரை போவதில்லை மேலும் வரி கீழே உள்ளது. 532 00:41:15,710 --> 00:41:20,980 நாம் மேலும் ஒரு படி எடுத்து கொள்ளலாம். 533 00:41:20,980 --> 00:41:29,490 மீண்டும் மரம் சம பூஜ்ய இந்த அனைத்து இல்லை. 534 00:41:29,490 --> 00:41:32,650 அது ஒரு வரி செயல்பாடு செய்யப்படுகிறது. 535 00:41:32,650 --> 00:41:36,790 இந்த குறுகிய சுற்று மதிப்பீடு ஒரு உதாரணம் ஆகும். 536 00:41:36,790 --> 00:41:40,680 ஆனால் இப்போது அதே யோசனை - 537 00:41:40,680 --> 00:41:47,320 பதிலாக - அப்படி என்றால் மரம் இல்லை சமமாக பூஜ்ய இல்லை - நன்கு அல்லது, 538 00:41:47,320 --> 00:41:49,580 மரம் சம பூஜ்ய இருந்தால், அது, மோசமான நிலையில் 539 00:41:49,580 --> 00:41:54,790 மரம் பூஜ்ய சமம் என்றால், முதல் நிலை தவறான போகிறது. 540 00:41:54,790 --> 00:42:00,550 எதையும் anded மிகவும் தவறான என்ன ஆக போகிறது? 541 00:42:00,550 --> 00:42:04,640 [மாணவர்] தவறு. >> சரி. இந்த குறுகிய சுற்று மதிப்பீடு மற்ற பாதி 542 00:42:04,640 --> 00:42:10,710 அங்கு மரம், நாம் கூட செல்ல சமமாக இல்லை பூஜ்ய இல்லை என்றால் - 543 00:42:10,710 --> 00:42:14,930 மரம் சம பூஜ்ய செய்தால் அல்லது, நாம் மதிப்பு == மரம் மதிப்பு செய்ய போவதில்லை. 544 00:42:14,930 --> 00:42:17,010 நாங்கள் உடனடியாக தவறான திரும்ப போகிறோம். 545 00:42:17,010 --> 00:42:20,970 இது குறுகிய சுற்று மதிப்பீடு செய்யவில்லை என்றால் பின்னர் அது, முக்கியமானது 546 00:42:20,970 --> 00:42:25,860 மரம் சம பூஜ்ய இல்லை என்றால், இந்த இரண்டாவது நிலையில், நொடி தவறு என்ன 547 00:42:25,860 --> 00:42:32,510 மர> மதிப்பு பூஜ்ஜிய dereferencing ஏனெனில். 548 00:42:32,510 --> 00:42:40,490 அதனால் தான். இந்த செய்யலாம் - முறை இடம் பெயர. 549 00:42:40,490 --> 00:42:44,840 இந்த, இந்த இந்த ஒரு வரி செய்து இல்லை, மேலும் ஒரு பொதுவான விஷயம் 550 00:42:44,840 --> 00:42:49,000 ஆனால், இங்கே ஒருவேளை, நிலைமைகள் ஒரு பொதுவான விஷயம் 551 00:42:49,000 --> 00:42:59,380 ஆனால் (மரம்! = NULL, மர> மதிப்பு == மதிப்பு), என்ன செய்தால். 552 00:42:59,380 --> 00:43:01,560 இந்த ஒரு மிகவும் பொதுவான நிலையில், அங்கு பதிலாக என்ற 553 00:43:01,560 --> 00:43:06,770 இரண்டு என்பதெல்லாம் இந்த உடைக்க, போன்ற இடங்களில், மரம் பூஜ்ய இருக்கிறது? 554 00:43:06,770 --> 00:43:11,780 சரி, அது வெற்று இல்லை, அதனால் இப்போது மதிப்பு சமமாக மரம் மதிப்பு? இதை. 555 00:43:11,780 --> 00:43:17,300 அதற்கு பதிலாக, இந்த நிலையில், இந்த தவறு Seg 556 00:43:17,300 --> 00:43:21,220 இந்த பூஜ்ய இருக்கும் நடந்தால் அதை உடைக்கும் ஏனெனில். 557 00:43:21,220 --> 00:43:24,000 உங்கள் மரம் முற்றிலும் தவறானது சுட்டிக்காட்டி இருந்தால் நன்றாக, நான் நினைக்கிறேன், அது இன்னும், தவறு Seg 558 00:43:24,000 --> 00:43:26,620 மரம் பூஜ்ய என்று ஆனால் அது தவறு Seg முடியாது. 559 00:43:26,620 --> 00:43:32,900 அது வெற்று இருந்தால் நீங்கள் எப்போதும் முதல் இடத்தில் சுட்டிக்காட்டி dereferenced முன், அதை உடைக்க வேண்டும். 560 00:43:32,900 --> 00:43:35,000 [மாணவர்] இந்த என சோம்பேறி மதிப்பீடு என்ன? 561 00:43:35,000 --> 00:43:40,770 >> [Bowden] சோம்பேறிகள் மதிப்பீடு ஒரு தனி விஷயம். 562 00:43:40,770 --> 00:43:49,880 சோம்பேறி மதிப்பீடு, நீங்கள் ஒரு மதிப்பை கேட்க இன்னும் இருக்கிறது 563 00:43:49,880 --> 00:43:54,270 நீங்கள் ஒரு மதிப்பை, என்ன கணக்கிட ask, ஆனால் நீங்கள் உடனடியாக அது தேவையில்லை. 564 00:43:54,270 --> 00:43:59,040 நீங்கள் உண்மையில் அது வேண்டும் வரை, அது மதிப்பீடு அல்ல. 565 00:43:59,040 --> 00:44:03,920 இந்த அதே விஷயம் இல்லை, ஆனால் ஹஃப்மேன் pset உள்ள, 566 00:44:03,920 --> 00:44:06,520 அதை நாம் "lazily" எழுத கூறுகிறார். 567 00:44:06,520 --> 00:44:08,670 நாம் உண்மையில் எழுதும் தாங்கல் நீங்கள் ஏனெனில் நாம் அதை செய்ய காரணம் - 568 00:44:08,670 --> 00:44:11,820 நாம், ஒரு நேரத்தில் தனிப்பட்ட பிட்கள் எழுத விரும்பவில்லை 569 00:44:11,820 --> 00:44:15,450 அல்லது ஒரு நேரத்தில் தனிப்பட்ட பைட்டுகள், நாம் பதிலாக பைட்டுகள் ஒரு துண்டின் பெற வேண்டும். 570 00:44:15,450 --> 00:44:19,270 நாம் பைட்டுகள் ஒரு துண்டின் வேண்டும், பிறகு, நாம் அதை எழுத வேண்டும். 571 00:44:19,270 --> 00:44:22,640 நீங்கள் எழுத அதை கேட்க கூட - மற்றும் fwrite மற்றும் fread விஷயம் அதே மாதிரி செய்ய. 572 00:44:22,640 --> 00:44:26,260 அவர்கள் உங்கள் எழுதுதல் மற்றும் தாங்குவதற்கு. 573 00:44:26,260 --> 00:44:31,610 நீங்கள் உடனடியாக எழுத அதை கேட்க கூட, அது அநேகமாக முடியாது. 574 00:44:31,610 --> 00:44:34,540 நீங்கள் எல்லாம் எழுத போகிறீர்கள் என்று இருக்க முடியாது 575 00:44:34,540 --> 00:44:37,540 நீங்கள் hfclose அழைப்பு அல்லது என்ன வரை, இது 576 00:44:37,540 --> 00:44:39,620 பின்னர் இதில், சரி, நான், என் கோப்பு மூடுவதற்கு 577 00:44:39,620 --> 00:44:43,450 நான் நன்றாக நான் இதுவரை எழுதவில்லை எல்லாம் எழுத என்று அர்த்தம். 578 00:44:43,450 --> 00:44:45,770 அதை எல்லாம் வெளியே எழுத வேண்டும் 579 00:44:45,770 --> 00:44:49,010 நீங்கள் கோப்பு மூடுவது, பின்னர் வரை அது தேவை. 580 00:44:49,010 --> 00:44:56,220 அதனால் தான் என்ன சோம்பேறி - இது நடக்க வரை காத்திருக்கும். 581 00:44:56,220 --> 00:44:59,990 இந்த -, 51 எடுத்து மற்றும் நீங்கள் இன்னும் விரிவாக இது செல்கிறேன் 582 00:44:59,990 --> 00:45:05,470 51 இல் OCaml எல்லாம், எல்லாம் மறுநிகழ்வு என்பதால். 583 00:45:05,470 --> 00:45:08,890 எந்த அடிப்படையில், தீர்வுகளை பங்கேற்பு உள்ளன. 584 00:45:08,890 --> 00:45:11,550 எல்லாம் மறுநிகழ்வு, மற்றும் சோம்பேறி மதிப்பீடு இல்லை 585 00:45:11,550 --> 00:45:14,790 சூழ்நிலைகள் நிறைய முக்கியமான போகிறது 586 00:45:14,790 --> 00:45:19,920 நீங்கள் lazily மதிப்பீடு செய்யவில்லை என்றால், எங்கே, என்று அர்த்தம் என்று - 587 00:45:19,920 --> 00:45:24,760 எடுத்துக்காட்டாக எண்ணற்ற நீண்ட அவை நீரோடைகள், இல்லை. 588 00:45:24,760 --> 00:45:30,990 கோட்பாடு, நீங்கள், 1-2-3-4-5-6-7 ஒரு ஓடை போன்ற இயற்கை எண்கள் என்று முடியும் 589 00:45:30,990 --> 00:45:33,090 எனவே lazily மதிப்பீடு விஷயங்களை நன்றாக இருக்கிறார்கள். 590 00:45:33,090 --> 00:45:37,210 நான் பத்தாவது வேண்டும் என்று சொன்னால், பிறகு நான் பத்தாவது வரை மதிப்பிட முடியாது. 591 00:45:37,210 --> 00:45:40,300 நான் நூறாவது எண் விரும்பினால், நான் நூறாவது எண் வரை மதிப்பிட முடியாது. 592 00:45:40,300 --> 00:45:46,290 சோம்பேறி மதிப்பீடு இல்லாமல், அது உடனடியாக அனைத்து எண்கள் மதிப்பீடு செய்ய முயற்சி நடக்கிறது. 593 00:45:46,290 --> 00:45:50,000 நீங்கள் எண்ணற்ற பல எண்கள் மதிப்பீடு, மற்றும் மட்டும் முடியாது. 594 00:45:50,000 --> 00:45:52,080 அதனால் சூழ்நிலைகள் நிறைய எங்கே சோம்பேறி மதிப்பீடு 595 00:45:52,080 --> 00:45:57,840 விஷயங்களை வேலை செய்து தான் அவசியம். 596 00:45:57,840 --> 00:46:05,260 >> இப்போது நாம் சேர்த்த இருக்கும் அமைந்துள்ள நுழைவு எழுத வேண்டும் 597 00:46:05,260 --> 00:46:08,430 இதேபோல் அதன் வரையறை மாறும். 598 00:46:08,430 --> 00:46:10,470 எனவே இப்போது அதை bool நுழைவு (int மதிப்பு) தான். 599 00:46:10,470 --> 00:46:23,850 நாம் bool நுழைவு (int மதிப்பு, கணு * மரம்) என்று மாற்ற போகிறோம். 600 00:46:23,850 --> 00:46:29,120 நாம் உண்மையில் ஒரு பிட் என்று மீண்டும் மாற்ற போகிறோம், நாம் ஏன் பார்க்க வேண்டும். 601 00:46:29,120 --> 00:46:32,210 மற்றும் நாம், நான் அதை கர்மம் என்ற, build_node நகர்த்த 602 00:46:32,210 --> 00:46:36,730 நாம் ஒரு செயல்பாடு முன்மாதிரி எழுத இல்லை, எனவே மேலே செருக. 603 00:46:36,730 --> 00:46:42,450 நீங்கள் சேர்த்த உள்ள build_node பயன்படுத்தி கொள்ள போகிறோம் என்று ஒரு குறிப்பு உள்ளது. 604 00:46:42,450 --> 00:46:49,590 சரி. அந்த ஒரு நிமிடம். 605 00:46:49,590 --> 00:46:52,130 நீ அதை இழுக்க வேண்டும் என்றால் நான், நான் திருத்தம் சேமிக்கப்படும் என்று 606 00:46:52,130 --> 00:47:00,240 அல்லது, குறைந்த பட்சம், நான் இப்போது இல்லை. 607 00:47:00,240 --> 00:47:04,190 நான், நுழைவு தர்க்கம் பற்றி நினைத்து சற்று இடைவெளி தேவை 608 00:47:04,190 --> 00:47:08,750 நீங்கள் அதை நினைக்க முடியாது. 609 00:47:08,750 --> 00:47:12,860 அடிப்படையில், நீங்கள் மட்டும் எப்போதும் இலைகள் உள்ள சேர்க்கைக்கு. 610 00:47:12,860 --> 00:47:18,640 நான் 1 செருக என்றால், இப்படி, நான் தவிர்க்க முடியாமல் 1 சேர்க்கைக்கு வேண்டும் போகிறேன் - 611 00:47:18,640 --> 00:47:21,820 நான் கருப்பு மாற்ற வேண்டும் - I'll இங்கு 1 சேர்க்கைக்கு வேண்டும். 612 00:47:21,820 --> 00:47:28,070 நான் 4 செருக அல்லது, நான் இங்கு 4 சேர்க்கைக்கு வேண்டும். 613 00:47:28,070 --> 00:47:32,180 இல்லை, நீங்கள் என்ன செய்தாலும், அதனால், நீங்கள் ஒரு இலை உள்ள சேர்க்கைக்கு போகிறாய். 614 00:47:32,180 --> 00:47:36,130 நீங்கள் செய்ய வேண்டியது எல்லாம் நீங்கள் முனை பெற வரை மரம் கீழே கூறு இல்லை 615 00:47:36,130 --> 00:47:40,890 அந்த முனை பெற்றோர், புதிய முனை பெற்றோர், இருக்க வேண்டும் 616 00:47:40,890 --> 00:47:44,560 பின்னர் என்பதை பொறுத்து, அதன் இடது அல்லது வலது சுட்டி மாற்ற 617 00:47:44,560 --> 00:47:47,060 அதை விட அதிகமாக அல்லது தற்போதைய முனை விட குறைவாக உள்ளது. 618 00:47:47,060 --> 00:47:51,180 உங்கள் புதிய கணு சுட்டிக்காட்ட என்று சுட்டிக்காட்டி மாற்ற. 619 00:47:51,180 --> 00:48:05,490 எனவே, மரம் கீழே கூறு புதிய முனை வரை இலை புள்ளி வைக்க. 620 00:48:05,490 --> 00:48:09,810 அந்த முன் நிலைமை வகை தடைசெய்கிறது ஏன் என்று, 621 00:48:09,810 --> 00:48:17,990 இது சரியான இருந்த நான் பைனரி மரம் கட்டப்பட்டு அங்கு 622 00:48:17,990 --> 00:48:19,920 நீங்கள் ஒரே ஒரு முனை பார்த்து, நீங்கள் 623 00:48:19,920 --> 00:48:24,830 நீங்கள் கீழே iterated என்றால் ஆனால் 9 7 இடது இருந்தது. 624 00:48:24,830 --> 00:48:29,770 அதனால் பின்னர், இந்த சூழ்நிலையில் சாத்தியமில்லை - 625 00:48:29,770 --> 00:48:32,530 சுமார் 9 அல்லது ஏதாவது சேர்க்கைக்கு நினைப்பு; முதல் முனை நேரத்தில், 626 00:48:32,530 --> 00:48:35,350 நான் 7 பார்க்க நான் சரியான போக போகிறேன் செல்கிறேன். 627 00:48:35,350 --> 00:48:38,490 எனவே, நான் ஒரு இலை சென்று சேர்க்கைக்கு நான் என்றால், நான் என்ன செய்தாலும் 628 00:48:38,490 --> 00:48:40,790 அதற்கான வழிமுறையை பயன்படுத்தி ஒரு இலை வேண்டும், 629 00:48:40,790 --> 00:48:43,130 அது என்னை 7 இடது 9 செருக முடியாது என நடக்கிறது 630 00:48:43,130 --> 00:48:48,250 விரைவில் நான் 7 வெற்றி என நான் போக போகிறேன், ஏனெனில். 631 00:48:59,740 --> 00:49:02,070 யார் தொடங்க ஏதாவது உள்ளதா? 632 00:49:02,070 --> 00:49:05,480 [மாணவர்] நான். >> என்று. 633 00:49:05,480 --> 00:49:09,200 [மாணவர், புரிந்து] 634 00:49:09,200 --> 00:49:14,390 [மற்ற மாணவர்கள், புரிந்து] 635 00:49:14,390 --> 00:49:18,330 [Bowden] இது பாராட்டப்பட்டது. சரி. விளக்க வேண்டும்? 636 00:49:18,330 --> 00:49:20,690 >> நாம் சேர்த்த என்று தெரியும் என்பதால் [மாணவர்] 637 00:49:20,690 --> 00:49:24,060 மரம் இறுதியில் புதிய முனைகள், 638 00:49:24,060 --> 00:49:28,070 நான் செயலாற்றலாலோ மரம் மூலம் சுருக்கிடப்படுகிறது 639 00:49:28,070 --> 00:49:31,360 நான் வெற்று சுட்டிக்காட்டினார் ஒரு முனை வந்தது வரை. 640 00:49:31,360 --> 00:49:34,220 பின்னர் நான் வலது பக்க அல்லது இடது பக்கத்தில் அதை வைத்து முடிவு 641 00:49:34,220 --> 00:49:37,420 இது சரியான மாறி பயன்படுத்தி; அது எங்கு அதை போட சொன்னார். 642 00:49:37,420 --> 00:49:41,850 பின்னர், முக்கியமாக, நான் கடந்த செய்த - 643 00:49:41,850 --> 00:49:47,520 இது உருவாக்கும் என்று புதிய கணு என்று திறக்க முனை புள்ளி, 644 00:49:47,520 --> 00:49:50,770 இடது பக்கத்தில் வலது பக்கத்தில் ஒன்று, மதிப்பு சரி என்ன பொறுத்து. 645 00:49:50,770 --> 00:49:56,530 இறுதியாக, நான் அதன் சோதனை மதிப்பு புதிய கணு மதிப்பு அமைக்க. 646 00:49:56,530 --> 00:49:59,550 [Bowden] சரி, நான் இங்கே ஒரு பிரச்சினை பார்க்க. 647 00:49:59,550 --> 00:50:02,050 இந்த அங்கே வழியில் 95% தான். 648 00:50:02,050 --> 00:50:07,550 நான் பார்க்க வேண்டும் என்று ஒரு பிரச்சினை, நன்றாக, வேறு யாராவது ஒரு பிரச்சினை பார்க்க வேண்டும்? 649 00:50:07,550 --> 00:50:18,400 அவர்கள் சுழற்சி வெளியே உடைக்க கீழ் சூழ்நிலையில் என்ன? 650 00:50:18,400 --> 00:50:22,100 [மாணவர்] திறக்க பூஜ்ய இருந்தால்? >> சரி. Temp பூஜ்ய இருந்தால் நீ வளைய வெளியே உடைக்க எப்படி இருக்கும். 651 00:50:22,100 --> 00:50:30,220 ஆனால் நான் இங்கு என்ன செய்ய? 652 00:50:30,220 --> 00:50:35,410 தவிர்க்க முடியாமல் வெற்று இது நான் dereference திறக்க,. 653 00:50:35,410 --> 00:50:39,840 எனவே நீங்கள் செய்ய வேண்டியது வேறு விஷயம் திறக்க பூஜ்ய வரை தான், கண்காணிக்க முடியாது 654 00:50:39,840 --> 00:50:45,590 நீங்கள் எல்லா நேரங்களிலும் பெற்றோர் கண்காணிக்க வேண்டும். 655 00:50:45,590 --> 00:50:52,190 நாங்கள் முனை * பெற்றோர் விரும்பவில்லை, நான் நாம் பூஜ்ய முதல் அந்த வைத்திருக்க முடியும் என நினைக்கிறேன். 656 00:50:52,190 --> 00:50:55,480 இந்த, மரத்தின் வேர் விசித்திரமான நடத்தை போகிறாள் 657 00:50:55,480 --> 00:50:59,210 ஆனால் நாம் அந்த கிடைக்கும். 658 00:50:59,210 --> 00:51:03,950 மதிப்பு என்ன விட பெரியதாக இருந்தால், பின்னர் திறக்க = திறக்க சரி. 659 00:51:03,950 --> 00:51:07,910 ஆனால் நாம் முன்னர் என்று, பெற்றோர் = temp. 660 00:51:07,910 --> 00:51:14,500 அல்லது பெற்றோர்கள் எப்போதும் சமமாக திறக்க போகிறோம்? வழக்கு என்று? 661 00:51:14,500 --> 00:51:19,560 Temp வெற்று இல்லையெனில், நான், இல்லை என்ன விஷயம், கீழே நகர்த்த போகிறேன் 662 00:51:19,560 --> 00:51:24,030 temp பெற்றோர் இது ஒரு முனை வேண்டும். 663 00:51:24,030 --> 00:51:27,500 எனவே பெற்றோர் திறக்க வேண்டும் நடக்கிறது, மற்றும் நான் கீழே திறக்க நடவடிக்கை. 664 00:51:27,500 --> 00:51:32,410 இப்போது திறக்க பூஜ்ய, ஆனால் பூஜ்ய என்று விஷயம் பெற்றோர் செய்ய பெற்றோர் புள்ளிகள். 665 00:51:32,410 --> 00:51:39,110 அதனால் கீழே இங்கே, நான் சரியான 1 சமமாக அமைக்க விரும்பவில்லை. 666 00:51:39,110 --> 00:51:41,300 அதனால் நான், மிக சரியான = 1 என்றால், சரியான சென்றார் 667 00:51:41,300 --> 00:51:45,130 நான் உங்களுக்கு என்ன செய்ய வேண்டும் என்று நினைக்கிறேன் - 668 00:51:45,130 --> 00:51:48,530 நீங்கள் இடது நகர என்றால், நீங்கள் 0 உரிமை சமமாக அமைக்க வேண்டும். 669 00:51:48,530 --> 00:51:55,950 அல்லது வேறு நீ சரியான செல்ல வேண்டும். 670 00:51:55,950 --> 00:51:58,590 எனவே சரியான = 0. வலது = 1 என்றால், 671 00:51:58,590 --> 00:52:04,260 இப்போது நாம், பெற்றோர் உரிமை சுட்டிக்காட்டி newnode செய்ய வேண்டும் 672 00:52:04,260 --> 00:52:08,520 வேறு நாம் பெற்றோர் இடது சுட்டிக்காட்டி newnode செய்ய வேண்டும். 673 00:52:08,520 --> 00:52:16,850 என்று கேள்விகள்? 674 00:52:16,850 --> 00:52:24,880 சரி. இந்த வழியில் நாங்கள் இல்லை - நன்றாக, உண்மையில், அதற்கு பதிலாக இதை, 675 00:52:24,880 --> 00:52:29,630 நாம் பாதி நீ build_node பயன்படுத்த எதிர்பார்க்கப்படுகிறது. 676 00:52:29,630 --> 00:52:40,450 Newnode பூஜ்ய சமம் என்றால், தவறான திரும்ப. 677 00:52:40,450 --> 00:52:44,170 என்று தான். இப்போது, இந்த நீங்கள் செய்ய எதிர்பார்த்தேன். 678 00:52:44,170 --> 00:52:47,690 >> இந்த ஊழியர்கள் தீர்வுகள் என்ன ஆகும். 679 00:52:47,690 --> 00:52:52,360 நான் அதை பற்றி போகிறேன் "சரி" என இந்த உடன்படவில்லை 680 00:52:52,360 --> 00:52:57,820 ஆனால் இந்த செய்தபின் நன்றாக அது வேலை செய்யும். 681 00:52:57,820 --> 00:53:02,840 இப்போது சற்றே சரி என்று ஒரு விஷயம் 682 00:53:02,840 --> 00:53:08,310 மரம் பூஜ்ய என ஆஃப் தொடங்குகிறது என்றால், நாம் ஒரு வெற்று கிளையில் அனுப்ப. 683 00:53:08,310 --> 00:53:12,650 நான் அதை நீங்கள் ஒரு வெற்று கிளையில் கடந்து நடத்தை வரையறை எப்படி பொறுத்து நினைக்கிறேன். 684 00:53:12,650 --> 00:53:15,490 நான், நீ ஒரு வெற்று கிளையில் அனுப்ப வேண்டும் என்று நினைப்பார்கள் 685 00:53:15,490 --> 00:53:17,520 பின்னர் ஒரு வெற்று மரத்தில் மதிப்பு சேர்க்கைக்கு 686 00:53:17,520 --> 00:53:23,030 தான் மதிப்பு என்று ஒற்றை முனை எங்கே ஒரு மரம் திரும்ப வேண்டும். 687 00:53:23,030 --> 00:53:25,830 மக்கள் உடன்பாடு? நீங்கள் முடியும், நீங்கள் விரும்பினால், 688 00:53:25,830 --> 00:53:28,050 நீங்கள் ஒரு வெற்று கிளையில் அனுப்ப வேண்டும் 689 00:53:28,050 --> 00:53:31,320 நீங்கள் அதை ஒரு மதிப்பு நுழைக்க வேண்டும், தவறான திரும்ப. 690 00:53:31,320 --> 00:53:33,830 அது வரையறுத்து வரை நீங்கள் தான். 691 00:53:33,830 --> 00:53:38,320 நான் என்று முதல் விஷயம் செய்ய - 692 00:53:38,320 --> 00:53:40,720 ஏனெனில், நீங்கள், பிரச்சினை என்று செய்து இருக்கலாம் 693 00:53:40,720 --> 00:53:44,090 நாங்கள் தான் ஒரு உலக சுட்டிக்காட்டி இருந்தால் அது, எளிதாக இருக்கும் 694 00:53:44,090 --> 00:53:48,570 மரம் பூஜ்ய இருந்தால் ஆனால் நாம், அதனால், நாம் அதை பற்றி என்ன செய்ய முடியும் எதுவும் இல்லை. 695 00:53:48,570 --> 00:53:50,960 நாம் தான் தவறான திரும்ப முடியும். 696 00:53:50,960 --> 00:53:52,840 நான் சேர்த்த மாற்ற போகிறேன். 697 00:53:52,840 --> 00:53:56,540 நாம் தொழில்நுட்ப தான், இங்கே இது சரியான மாற்ற முடியும் 698 00:53:56,540 --> 00:53:58,400 எப்படி அது, விஷயத்துக்கெல்லாம் தேடி 699 00:53:58,400 --> 00:54:04,530 ஆனால் நான் ஒரு முனை ** மரம் எடுத்து நுழைவு மாற்ற போகிறேன். 700 00:54:04,530 --> 00:54:07,510 இரட்டை சுட்டிகள். 701 00:54:07,510 --> 00:54:09,710 இதற்கு என்ன அர்த்தம்? 702 00:54:09,710 --> 00:54:12,330 அதற்கு பதிலாக முனைகளில் சுட்டிகளையும் கையாள்வது, 703 00:54:12,330 --> 00:54:16,690 நான் கையாள்வது வேண்டும் போகிறேன் தான் இந்த சுட்டிக்காட்டி இருக்கிறது. 704 00:54:16,690 --> 00:54:18,790 நான் இந்த சுட்டியை பயன்படுத்தி கொள்ள போகிறேன். 705 00:54:18,790 --> 00:54:21,770 நான் நேரடியாக சுட்டிகள் கையாள்வது வேண்டும் போகிறேன். 706 00:54:21,770 --> 00:54:25,760 , கீழே பற்றி சிந்திக்க இருந்து இந்த அர்த்தமுள்ளதாக - 707 00:54:25,760 --> 00:54:33,340 நன்றாக, இப்போது இந்த புள்ளிகள் பூஜ்ய வேண்டும். 708 00:54:33,340 --> 00:54:38,130 நான் என்ன செய்ய வேண்டும் சுழியின்மை சுட்டி இந்த சுட்டிக்காட்டி கையாள வேண்டும். 709 00:54:38,130 --> 00:54:40,970 நான் அதை என் புதிய கணு சுட்டிக்காட்ட விரும்புகிறேன். 710 00:54:40,970 --> 00:54:44,870 நான் என் சுட்டிகள் சுட்டிகளையும் கண்காணிப்பதற்காக, என்றால் 711 00:54:44,870 --> 00:54:47,840 நான் ஒரு தாய் சுட்டிக்காட்டி கண்காணிப்பதற்கான தேவையில்லை. 712 00:54:47,840 --> 00:54:52,640 நான், சுட்டிக்காட்டி பூஜ்ய குறிக்கும் என்பதை பார்க்கவும் தடமறியலாம் 713 00:54:52,640 --> 00:54:54,580 மற்றும் சுட்டி சுட்டி இருந்தால் பூஜ்ய வேண்டும், 714 00:54:54,580 --> 00:54:57,370 நான் முனை சுட்டிக்காட்ட அதை மாற்ற. 715 00:54:57,370 --> 00:55:00,070 நான் சுட்டிக்காட்டி ஒரு சுட்டிக்காட்டி என்பதால் நான் அதை மாற்ற முடியும். 716 00:55:00,070 --> 00:55:02,040 இப்போது இது சரியான பார்க்கலாம். 717 00:55:02,040 --> 00:55:05,470 நீங்கள் உண்மையில் மறுசுழலில் அழகாக எளிதாக செய்ய முடியும். 718 00:55:05,470 --> 00:55:08,080 நாங்கள் அதை செய்ய வேண்டுமா? 719 00:55:08,080 --> 00:55:10,980 ஆம், நாம். 720 00:55:10,980 --> 00:55:16,790 >> அது மீண்டும் மீண்டும் பார்க்கிறேன். 721 00:55:16,790 --> 00:55:24,070 முதல், என்ன நம் அடிப்படை வழக்கில் போகிறது? 722 00:55:24,070 --> 00:55:29,140 எப்போதும் நம் அடிப்படை வழக்கு; ஆனால் உண்மையில், இந்த தந்திரமான வகையாக. 723 00:55:29,140 --> 00:55:34,370 முதல் முதல் விஷயங்கள், நீங்கள் (மரம் == NULL) 724 00:55:34,370 --> 00:55:37,550 நான் தான் தவறான திரும்ப போகிறோம் நினைக்கிறேன். 725 00:55:37,550 --> 00:55:40,460 இந்த உங்கள் மரம் இருப்பது பூஜ்ய வேறுபட்டது. 726 00:55:40,460 --> 00:55:44,510 இந்த உங்கள் ரூட் சுட்டிக்காட்டி பூஜ்ய என்பதை சுட்டிக்காட்டி இருக்கிறது 727 00:55:44,510 --> 00:55:48,360 இது உங்கள் ரூட் சுட்டிக்காட்டி இல்லை என்று அர்த்தம். 728 00:55:48,360 --> 00:55:52,390 அதனால் கீழே இங்கே, நான் என்ன செய்ய வேண்டும் 729 00:55:52,390 --> 00:55:55,760 கணு * - இன் இந்த மீண்டும் நாம். 730 00:55:55,760 --> 00:55:58,960 கணு * ரூட் = NULL, 731 00:55:58,960 --> 00:56:00,730 பின்னர் நான், இப்படி ஏதாவது செய்து சேர்த்த அழைக்க போகிறேன் 732 00:56:00,730 --> 00:56:04,540 & ரூட் இந்த 4 செருக. 733 00:56:04,540 --> 00:56:06,560 அதனால் & ரூட், ரூட் ஒரு முனை * இருந்தால் 734 00:56:06,560 --> 00:56:11,170 பின்னர் & ரூட் ஒரு முனை ** போகிறது. 735 00:56:11,170 --> 00:56:15,120 இந்த செல்லுபடியாகும். இங்கே இந்த வழக்கில், மரம்,, 736 00:56:15,120 --> 00:56:20,120 அல்லது நுழைவு - மரம் பூஜ்ய அல்ல. 737 00:56:20,120 --> 00:56:24,630 இங்கே. மரம் பூஜ்ய அல்ல; * மரம் பூஜ்ய உள்ளது, நலமாக உள்ளது 738 00:56:24,630 --> 00:56:26,680 * மரம் பூஜ்ய இருந்தால், நான் அதை கையாள முடியும் என்பதால், 739 00:56:26,680 --> 00:56:29,210 இப்போது நான் சுட்டிக்காட்ட விரும்புகிறேன் சுட்டிக்காட்ட. 740 00:56:29,210 --> 00:56:34,750 மரம் பூஜ்ய இருந்தால் ஆனால், அந்த நான் இங்கே வந்து பூஜ்ய என்று பொருள். 741 00:56:34,750 --> 00:56:42,710 பயன் இல்லை என்று. நான் அந்த ஒன்றும் செய்ய முடியாது. 742 00:56:42,710 --> 00:56:45,540 மரம் பூஜ்ய இருந்தால், தவறான திரும்ப. 743 00:56:45,540 --> 00:56:48,220 நான் அடிப்படையில் ஏற்கனவே நமது உண்மையான அடிப்படை விஷயம் என்ன கூறினார். 744 00:56:48,220 --> 00:56:50,580 என்ன என்று போகிறது? 745 00:56:50,580 --> 00:56:55,030 [மாணவர், புரிந்து] 746 00:56:55,030 --> 00:57:00,000 [Bowden] ஆமாம். எனவே (* மரம் == NULL) என்றால். 747 00:57:00,000 --> 00:57:04,520 இந்த இங்கு வழக்கில் தொடர்புடையதாக 748 00:57:04,520 --> 00:57:09,640 என் சிவப்பு சுட்டிக்காட்டி சுட்டிக்காட்டி இருந்தால் நான் கவனம் எங்கே, 749 00:57:09,640 --> 00:57:12,960 நான் இந்த சுட்டிக்காட்டி கவனம் போல் எனவே, இப்போது நான் இந்த சுட்டிக்காட்டி கவனம். 750 00:57:12,960 --> 00:57:15,150 இப்போது நான் இந்த சுட்டிக்காட்டி கவனம். 751 00:57:15,150 --> 00:57:18,160 நீங்கள் என் முனை ** இது என் சிவப்பு சுட்டிக்காட்டி,, 752 00:57:18,160 --> 00:57:22,880 எப்போதாவது - * என்றால், என் சிவப்பு சுட்டிக்காட்டி, எப்போதும் பூஜ்ய உள்ளது 753 00:57:22,880 --> 00:57:28,470 என்று நான் ஒரு சுட்டிக்காட்டி அந்த புள்ளிகளை மையமாக நான் அங்கு வழக்கு தான் அர்த்தம் - 754 00:57:28,470 --> 00:57:32,530 இந்த ஒரு இலை சொந்தமானது என்று ஒரு சுட்டி உள்ளது. 755 00:57:32,530 --> 00:57:41,090 நான் என் புதிய கணு சுட்டி இந்த சுட்டிக்காட்டி மாற்ற வேண்டும். 756 00:57:41,090 --> 00:57:45,230 இங்கு வந்து. 757 00:57:45,230 --> 00:57:56,490 என் newnode ஒரு முனை * n = build_node (மதிப்பு) இருக்கும் 758 00:57:56,490 --> 00:58:07,300 பின்னர் n, n = NULL என்றால், தவறான திரும்ப. 759 00:58:07,300 --> 00:58:12,600 வேறு நாம் சுட்டிக்காட்டி தற்போது சுட்டி காட்டியது என்ன மாற்ற வேண்டும் 760 00:58:12,600 --> 00:58:17,830 இப்போது நம் புதிதாக கட்டப்பட்ட முனை சுட்டிக்காட்ட. 761 00:58:17,830 --> 00:58:20,280 நாம் உண்மையில் இங்கு என்ன செய்ய முடியும். 762 00:58:20,280 --> 00:58:30,660 அதற்கு பதிலாக n சொல்லி, நாம் சொல்ல * மரம் = * மரம் என்றால். 763 00:58:30,660 --> 00:58:35,450 ஒவ்வொருவரும் புரிந்து? அந்த சுட்டிகள் சுட்டிகளையும் கையாள்வதில் மூலம், 764 00:58:35,450 --> 00:58:40,750 நாம் அவர்களுக்கு சுட்டிக்காட்ட விரும்புகிறேன் விஷயங்களை சுட்டிக்காட்ட பூஜ்ய சுட்டிகள் மாற்ற முடியும். 765 00:58:40,750 --> 00:58:42,820 என்று நம் அடிப்படை வழக்கு. 766 00:58:42,820 --> 00:58:45,740 >> இப்போது எங்கள் மீண்டும், அல்லது நம் மறுநிகழ்வு, 767 00:58:45,740 --> 00:58:51,430 நாங்கள் செய்து வருகிறோம் மற்ற recursions போலவே இருக்கும். 768 00:58:51,430 --> 00:58:55,830 நாம், மதிப்பு சேர்க்க வேண்டும் போகிறாய் 769 00:58:55,830 --> 00:58:59,040 இப்போது நான் மீண்டும் மும்மை பயன்படுத்த போகிறேன், ஆனால் என்ன எங்கள் நிலைமை என்ன? 770 00:58:59,040 --> 00:59:05,180 அதை நாம் இடது அல்லது வலது செல்ல வேண்டும் என்பதை முடிவு செய்ய என்ன தேடுகிறீர்கள்? 771 00:59:05,180 --> 00:59:07,760 தனி படிகளில் அதை நாம். 772 00:59:07,760 --> 00:59:18,850 நீங்கள் (மதிப்பு <) என்ன? 773 00:59:18,850 --> 00:59:23,200 [மாணவர்] மரத்தின் மதிப்பு? 774 00:59:23,200 --> 00:59:27,490 [Bowden] நான் தற்போது உள்ளேன் என்பதை நினைவில் - 775 00:59:27,490 --> 00:59:31,260 [மாணவர்கள், புரிந்து] 776 00:59:31,260 --> 00:59:34,140 [Bowden] அப்படியா சரி இங்கே, தான் சொல்கிறேன் என்று இந்த பச்சை அம்புக்குறி 777 00:59:34,140 --> 00:59:39,050 மரம் தற்போது என்ன ஒரு உதாரணம், இந்த சுட்டியை ஒரு சுட்டிக்காட்டி இருக்கிறது. 778 00:59:39,050 --> 00:59:46,610 அதனால் நான் 3 ஒரு சுட்டிக்காட்டி ஒரு சுட்டிக்காட்டி இருக்கிறேன் என்று பொருள். 779 00:59:46,610 --> 00:59:48,800 dereference இருமுறை நல்ல இனிக்கும். 780 00:59:48,800 --> 00:59:51,010 நான் என்ன செய்ய - நான் எப்படி செய்ய வேண்டும்? 781 00:59:51,010 --> 00:59:53,210 [மாணவர்] ஒருமுறை Dereference, பின்னர் அதை அம்புக்குறி என்று வழி? 782 00:59:53,210 --> 00:59:58,420 [Bowden] எனவே (* மரம்) முறை dereference தான், -> மதிப்பு 783 00:59:58,420 --> 01:00:05,960 என்னை நான் மறைமுகமாக சுட்டி காட்டியது என்று நான் முனை மதிப்பு கொடுக்க வேண்டும். 784 01:00:05,960 --> 01:00:11,980 அதனால் நான் நீங்கள் விரும்பினால் அதை tree.value ** எழுதலாம். 785 01:00:11,980 --> 01:00:18,490 வேலை ஒன்று. 786 01:00:18,490 --> 01:00:26,190 அந்த வழக்கு இருந்தால், நான் மதிப்பு செருக அழைக்க வேண்டும். 787 01:00:26,190 --> 01:00:32,590 என்ன என் மேம்படுத்தப்பட்டது முனை ** போகிறது? 788 01:00:32,590 --> 01:00:39,440 நான் இடது செல்ல வேண்டும், ஆகவே ** tree.left என் இடது போகிறது. 789 01:00:39,440 --> 01:00:41,900 நான் அந்த விஷயத்தை சுட்டிக்காட்டி வேண்டும் 790 01:00:41,900 --> 01:00:44,930 அதனால் இடது பூஜ்ய சுட்டிக்காட்டி இருப்பது வரை முடிந்தால், 791 01:00:44,930 --> 01:00:48,360 நான் என் புதிய கணு சுட்டிக்காட்ட அதை மாற்ற முடியாது. 792 01:00:48,360 --> 01:00:51,460 >> மற்றும் பிற வழக்கு மிகவும் ஒத்த இருக்க முடியும். 793 01:00:51,460 --> 01:00:55,600 அது உண்மையில் என் மும்மை என்று இப்போது செய்யலாம். 794 01:00:55,600 --> 01:01:04,480 என்றால் மதிப்பு <(** மரம்). மதிப்பு சேர்க்க. 795 01:01:04,480 --> 01:01:11,040 நாம், இடது எங்கள் ** மேம்படுத்த வேண்டும் 796 01:01:11,040 --> 01:01:17,030 வேறு நாம் சரியான எங்கள் ** மேம்படுத்த வேண்டும். 797 01:01:17,030 --> 01:01:22,540 [மாணவர்] அந்த முள்ளோடு சுட்டிக்காட்டி கிடைக்குமா? 798 01:01:22,540 --> 01:01:30,940 [Bowden] என்பதை நினைவில் - ** tree.right ஒரு முனை நட்சத்திரம். 799 01:01:30,940 --> 01:01:35,040 [மாணவர், புரிந்து] >> சரி. 800 01:01:35,040 --> 01:01:41,140 ** Tree.right இந்த சுட்டியை அல்லது ஏதோ போல். 801 01:01:41,140 --> 01:01:45,140 அதனால் ஒரு சுட்டிக்காட்டி எடுத்து, அந்த எனக்கு என்ன வேண்டும் என்று எனக்கு கொடுக்கிறது 802 01:01:45,140 --> 01:01:50,090 அந்த பையன் என்று சுட்டிக்காட்டி இருக்கிறது. 803 01:01:50,090 --> 01:01:54,260 நாம் இரண்டு சுட்டிகள் பயன்படுத்தி ஏன் [மாணவர்] நாங்கள் மீண்டும் போக முடியுமா? 804 01:01:54,260 --> 01:01:58,220 [Bowden] சரி. எனவே - இல்லை, நீங்கள் முன் முடியும், அந்த தீர்வு 805 01:01:58,220 --> 01:02:04,540 இரண்டு சுட்டிகள் செய்யாமல் அதை ஒரு வழியாக இருந்தது. 806 01:02:04,540 --> 01:02:08,740 நீங்கள், இரண்டு சுட்டிகள் பயன்படுத்தி கொள்ள முடியும் வேண்டும் 807 01:02:08,740 --> 01:02:11,660 இந்த தெளிவான தீர்வு. 808 01:02:11,660 --> 01:02:16,090 மேலும், என் மரம் என்றால் என்ன நடக்கும், என்று அறிவிப்பு - 809 01:02:16,090 --> 01:02:24,480 என் ரூட் பூஜ்ய இருந்தால் என்ன நடக்கும்? நான் இங்கே இந்த வழக்கு செய்தால் என்ன நடக்கும்? 810 01:02:24,480 --> 01:02:30,540 அதனால் முனை * ரூட் = NULL, மற்றும் வேர் என 4 செருக. 811 01:02:30,540 --> 01:02:35,110 ரூட் இந்த பிறகு என்ன நடக்கிறது? 812 01:02:35,110 --> 01:02:37,470 [மாணவர், புரிந்து] >> சரி. 813 01:02:37,470 --> 01:02:41,710 ரூட் மதிப்பு 4 போகிறது. 814 01:02:41,710 --> 01:02:45,510 ரூட் இடது பூஜ்ய போகிறது, ரூட் சரியான பூஜ்ஜிய போகிறது. 815 01:02:45,510 --> 01:02:49,490 வழக்கில் நாம் எங்கே, முகவரி மூலம் ரூட் வெற்றி பெறவில்லை 816 01:02:49,490 --> 01:02:52,490 நாம் ரூட் மாற்ற முடியவில்லை. 817 01:02:52,490 --> 01:02:56,020 வழக்கில் இடத்தில் மரம் - ரூட் பூஜ்ய இருந்தது, 818 01:02:56,020 --> 01:02:58,410 நாம் தான் தவறான திரும்ப வேண்டியதாயிற்று. நாம் செய்ய ஒன்றுமில்லை. 819 01:02:58,410 --> 01:03:01,520 நாம் ஒரு வெற்று மரத்தில் ஒரு முனை செருக முடியாது. 820 01:03:01,520 --> 01:03:06,810 ஆனால் இப்போது நாம்; நாங்கள் ஒரு முனை மரத்தில் ஒரு வெற்று மரம் செய்ய. 821 01:03:06,810 --> 01:03:13,400 இது பொதுவாக வேலை செய்ய வேண்டும் என்று எதிர்பார்க்கப்படும் வழி. 822 01:03:13,400 --> 01:03:21,610 >> மேலும், இந்த விட குறைவாக உள்ளது 823 01:03:21,610 --> 01:03:26,240 பெற்றோர் கண்காணிப்பதற்கு, அதனால் நீங்கள் அனைவரும் கீழே கூறு. 824 01:03:26,240 --> 01:03:30,140 இப்போது நான் என் பெற்றோர் இல்லை, நான் என்ன என் பெற்றோர் உரிமை சுட்டிக்காட்டி இருக்கிறது. 825 01:03:30,140 --> 01:03:35,640 நாம் செயலாற்றலாலோ இந்த செய்தால் அதற்கு பதிலாக, இது ஒரு சுழற்சி அதே கருத்தை இருக்கும். 826 01:03:35,640 --> 01:03:38,100 ஆனால் அதற்கு பதிலாக என் பெற்றோர் சுட்டிக்காட்டி சமாளிக்க இருந்து, 827 01:03:38,100 --> 01:03:40,600 அதற்கு பதிலாக என் தற்போதைய சுட்டிக்காட்டி தான் இருக்கும் 828 01:03:40,600 --> 01:03:43,790 நான் நேரடியாக என் புதிய கணு சுட்டிக்காட்ட மாற்றும் என்று. 829 01:03:43,790 --> 01:03:46,090 நான் அதை இடது சுட்டி காட்டும் என்பதை சமாளிக்க இல்லை. 830 01:03:46,090 --> 01:03:48,810 நான் அதை சரி செய்ய சுட்டி காட்டும் என்பதை சமாளிக்க இல்லை. 831 01:03:48,810 --> 01:04:00,860 இந்த சுட்டிக்காட்டி, நான் என் புதிய கணு சுட்டிக்காட்ட அதை அமைக்க போகிறேன் என்பது என்ன தான் இருக்கிறது. 832 01:04:00,860 --> 01:04:05,740 எல்லோரும் அதை எவ்வாறு புரிந்து? 833 01:04:05,740 --> 01:04:09,460 இல்லை என்றால் நாம் ஏன், இந்த வழி செய்யவேண்டும் 834 01:04:09,460 --> 01:04:14,920 ஆனால் குறைந்த பட்சம் இந்த ஒரு தீர்வாக வேலை? 835 01:04:14,920 --> 01:04:17,110 [மாணவர்] எங்கே நாம் உண்மையான திருப்பி? 836 01:04:17,110 --> 01:04:21,550 [Bowden] சரி இங்கே அநேகமாக அது. 837 01:04:21,550 --> 01:04:26,690 நாம் சரியாக பொருத்தி இருந்தால், உண்மை திருப்பி. 838 01:04:26,690 --> 01:04:32,010 வேறு, கீழே இங்கே நாம் சேர்த்த வருமானம் என்ன திரும்ப வேண்டும் போகிறோம். 839 01:04:32,010 --> 01:04:35,950 >> இந்த ரிகர்ஸிவ் செயல்பாடு பற்றி சிறப்பு என்ன? 840 01:04:35,950 --> 01:04:43,010 இது, மிக நீண்ட நாம் சில உகந்ததாக்கலை தொகுக்கலாம் என, சூத்திர வால் தான் 841 01:04:43,010 --> 01:04:48,060 , அதை அங்கீகரிக்கும் இந்த ஒரு அடுக்கு வழிதல் வராது 842 01:04:48,060 --> 01:04:53,230 எங்கள் மரம் 10,000 அல்லது 10 மில்லியன் உயரத்தில் உள்ளது கூட. 843 01:04:53,230 --> 01:04:55,630 [மாணவர், புரிந்து] 844 01:04:55,630 --> 01:05:00,310 [Bowden] நான் சிறுகோடு அது நினைக்கிறேன் - அல்லது என்ன ஆப்டிமைசேஷன் நிலை 845 01:05:00,310 --> 01:05:03,820 அங்கீகரிக்கப்பட ஒரு வால் மறுநிகழ்வு தேவைப்படுகிறது. 846 01:05:03,820 --> 01:05:09,350 நான் அதை உணர்ந்து தான் - GCC மற்றும் கணகண வென்ற சப்தம் 847 01:05:09,350 --> 01:05:12,610 தங்கள் உகந்ததாக்கல் நிலைகளை வெவ்வேறு அர்த்தங்களை. 848 01:05:12,610 --> 01:05:17,870 நான் அது வால் மறுநிகழ்வு அங்கீகரிக்க உறுதியாக DashO 2, தான் சொல்ல வேண்டும். 849 01:05:17,870 --> 01:05:27,880 ஆனால் நாம் - நீங்கள் ஒரு Fibonocci எடுத்துக்காட்டாக அல்லது வேறு ஏதாவதா அமைக்க முடியும். 850 01:05:27,880 --> 01:05:30,030 அதை கட்ட முடியாது, ஏனெனில் இது, இந்த சோதிக்க எளிதல்ல 851 01:05:30,030 --> 01:05:32,600 அதனால் பெரிய என்று ஒரு பைனரி மரம். 852 01:05:32,600 --> 01:05:37,140 ஆனால் ஆமாம், நான் அதை DashO 2, என்று 853 01:05:37,140 --> 01:05:40,580 நீங்கள் DashO 2 தொகுத்தல், அது வால் மறுநிகழ்வு பார்க்கிறேன் 854 01:05:40,580 --> 01:05:54,030 மற்றும் உகந்ததாக்க என்று. 855 01:05:54,030 --> 01:05:58,190 அது திரும்பி செல்லலாம் - செருக உண்மையில் அது தேவை கடந்த விஷயம். 856 01:05:58,190 --> 01:06:04,900 இங்கு நுழைவு திரும்பி போகலாம் 857 01:06:04,900 --> 01:06:07,840 நாம் ஒரே யோசனை செய்ய போகிறோம் அங்கு. 858 01:06:07,840 --> 01:06:14,340 அது இன்னும் முழுமையாக கையாள முடியாத குறையை வேண்டும் 859 01:06:14,340 --> 01:06:17,940 ரூட் தன்னை பூஜ்ய, அல்லது கடந்த நுழைவு, பூஜ்ய போது 860 01:06:17,940 --> 01:06:20,060 ஆனால் அதற்கு பதிலாக ஒரு தாய் சுட்டிக்காட்டி கையாள்வது, 861 01:06:20,060 --> 01:06:27,430 இந்த குறிப்புகள் என வைத்து சுட்டிகள் அதே தர்க்கம் பூசுகிறேன். 862 01:06:27,430 --> 01:06:35,580 இங்கே நாம், நம் முனை ** நடப்பு வைத்து 863 01:06:35,580 --> 01:06:37,860 நாம், சரியான இனி கண்காணிப்பதற்கான தேவையில்லை 864 01:06:37,860 --> 01:06:47,190 ஆனால் முனை ** நடப்பு = & மரம். 865 01:06:47,190 --> 01:06:54,800 இப்போது எங்கள் போது வளைய * நடப்பு சம பூஜ்ய இல்லை போது போகிறது. 866 01:06:54,800 --> 01:07:00,270 இனி பெற்றோர்கள் கண்காணிக்க தேவையில்லை. 867 01:07:00,270 --> 01:07:04,180 இடது மற்றும் வலது கண்காணிக்க தேவையில்லை. 868 01:07:04,180 --> 01:07:10,190 நாம் ஏற்கனவே திறக்க பயன்படுத்தும் ஏனெனில் நான், அதை திறக்க அழைக்கிறேன். 869 01:07:10,190 --> 01:07:17,200 சரி. நீங்கள் (மதிப்பு> * temp), 870 01:07:17,200 --> 01:07:24,010 பின்னர் & (* temp) -> உரிமை 871 01:07:24,010 --> 01:07:29,250 வேறு திறக்க = & (* temp) -> விட்டு. 872 01:07:29,250 --> 01:07:32,730 இப்போது, இந்த நேரத்தில், இந்த நேரத்தில் வளைய பின்னர், 873 01:07:32,730 --> 01:07:36,380 ஒருவேளை அதை பற்றி செயலாற்றலாலோ மறுசுழலில் விட என்று எளிதாக காரணம் நான் தான், இதை செய்ய 874 01:07:36,380 --> 01:07:39,010 ஆனால் இந்த நேரத்தில் வளைய பின்னர், 875 01:07:39,010 --> 01:07:43,820 * திறக்க நாம் மாற்ற வேண்டும் சுட்டிக்காட்டி இருக்கிறது. 876 01:07:43,820 --> 01:07:48,960 >> முன்னர், நாம் பெற்றோர் இருந்தது, மற்றும் நாம் பெற்றோர் இடது அல்லது பெற்றோர் சரி அல்லது மாற்ற வேண்டும் 877 01:07:48,960 --> 01:07:51,310 ஆனால் நாம் பெற்றோர் உரிமை மாற்ற வேண்டும் என்றால், 878 01:07:51,310 --> 01:07:54,550 பின்னர் * திறக்க பெற்றோர் சரி, நாம் நேரடியாக அதை மாற்ற முடியும். 879 01:07:54,550 --> 01:08:05,860 அதனால் கீழே இங்கே, நாம் * திறக்க = newnode செய்ய முடியும், அவ்வளவு தான். 880 01:08:05,860 --> 01:08:09,540 அறிவிப்பு எனவே, நாம் இந்த செய்த அனைத்து குறியீடு வரிகளை எடுத்து இருந்தது. 881 01:08:09,540 --> 01:08:14,770 கூடுதல் முயற்சி என்று அனைத்து பெற்றோர் கண்காணிக்க வேண்டும். 882 01:08:14,770 --> 01:08:18,689 இங்கே, நாங்கள் தான் முள்ளோடு சுட்டிக்காட்டி கண்காணிப்பதற்கான என்றால், 883 01:08:18,689 --> 01:08:22,990 நாம் இப்போது இந்த சுருள் ப்ரேஸ் பெற நினைத்தாலும், 884 01:08:22,990 --> 01:08:27,170 இது குறுகிய பார்க்க. 885 01:08:27,170 --> 01:08:32,529 இந்த இப்போது, அதே தீர்வு 886 01:08:32,529 --> 01:08:38,210 ஆனால் குறியீடு குறைந்த கோடுகள். 887 01:08:38,210 --> 01:08:41,229 நீங்கள், ஒரு சரியான தீர்வாக இந்த அங்கீகரித்து தொடங்க 888 01:08:41,229 --> 01:08:43,529 அது சரி, இந்த மாதிரி விட சுமார் காரணம் எளிதாகவும் 889 01:08:43,529 --> 01:08:45,779 நான் ஏன் எண்ணாக வலது இந்த கொடி இருக்கிறது? 890 01:08:45,779 --> 01:08:49,290 இதற்கு என்ன அர்த்தம்? ஓ, அது குறிப்பிடும் அந்த 891 01:08:49,290 --> 01:08:51,370 நான் போய் ஒவ்வொரு முறையும், நான், அதை அமைக்க வேண்டும் 892 01:08:51,370 --> 01:08:53,819 நான் விட்டு சென்றால் வேறு நான் பூஜ்யம் அதை அமைக்க வேண்டும். 893 01:08:53,819 --> 01:09:04,060 இங்கே, நான் அது பற்றி காரணம் இல்லை; அதை பற்றி யோசிக்க மட்டும் எளிதாக இருக்கிறது. 894 01:09:04,060 --> 01:09:06,710 கேள்விகள்? 895 01:09:06,710 --> 01:09:16,290 [மாணவர், புரிந்து] >> சரி. 896 01:09:16,290 --> 01:09:23,359 சரி, அதனால் கடந்த பிட் - 897 01:09:23,359 --> 01:09:28,080 நான், நாம் என்ன செய்ய முடியும் ஒரு விரைவான மற்றும் எளிதான செயல்பாடு என்று நினைக்கிறேன் 898 01:09:28,080 --> 01:09:34,910 let's - ஒன்றாக, நான் நினைக்கிறேன், ஒரு செயல்பாடு உள்ளது முயற்சி எழுத 899 01:09:34,910 --> 01:09:38,899 அது ஒரு பைனரி தேடல் மரம் என்பதை இது கவலைப்படவில்லை. 900 01:09:38,899 --> 01:09:43,770 இந்த செயல்பாடு உண்மை திரும்ப வேண்டும் கொண்டுள்ளது 901 01:09:43,770 --> 01:09:58,330 நீங்கள் எங்கு இந்த பொது பைனரி ட்ரீ நாம் தேடும் மதிப்பு. 902 01:09:58,330 --> 01:10:02,520 நாம் செயலாற்றலாலோ அதை செய்கிறேன், பின்னர் முதல் மறுசுழலில் அதை செய்ய வேண்டும். 903 01:10:02,520 --> 01:10:07,300 இந்த உண்மையில் குறுகிய இருக்கும், ஏனெனில் நாங்கள் உண்மையில் அதை ஒன்றாக செய்ய முடியும். 904 01:10:07,300 --> 01:10:11,510 >> என் தளத்தை வழக்கு என்ன செய்ய போகிறார்கள்? 905 01:10:11,510 --> 01:10:13,890 [மாணவர், புரிந்து] 906 01:10:13,890 --> 01:10:18,230 [Bowden] இருந்தால் (மரம் == NULL), பிறகு என்ன? 907 01:10:18,230 --> 01:10:22,740 [மாணவர்] தவறான Return. 908 01:10:22,740 --> 01:10:26,160 [Bowden] இல்லையென்றால், நன்றாக, நான் வேறு தேவையில்லை. 909 01:10:26,160 --> 01:10:30,250 என் மற்ற அடிப்படை வழக்கில் இருந்தது. 910 01:10:30,250 --> 01:10:32,450 [மாணவர்] மரம் மதிப்பு? >> சரி. 911 01:10:32,450 --> 01:10:36,430 எனவே (மர> மதிப்பு == மதிப்பு என்றால். 912 01:10:36,430 --> 01:10:39,920 நாம் முனை ** கள், கணு * மீண்டும் அல்ல அறிவிப்பு? 913 01:10:39,920 --> 01:10:42,990 கொண்டுள்ளது, ஒரு முனை ** பயன்படுத்த வேண்டும் 914 01:10:42,990 --> 01:10:45,480 நாம் சுட்டிகள் மாற்றிய பின்னர். 915 01:10:45,480 --> 01:10:50,540 நாம் தான் அவர்களை கடக்கும். 916 01:10:50,540 --> 01:10:53,830 அது நடந்தால், நாம் உண்மையான திரும்ப வேண்டும். 917 01:10:53,830 --> 01:10:58,270 வேறு நாம் குழந்தைகள் நடந்தே செல்கிறார்கள் வேண்டும். 918 01:10:58,270 --> 01:11:02,620 நாம் இடது எல்லாவற்றையும் குறைவாக என்பதை பற்றி காரணம் முடியாது 919 01:11:02,620 --> 01:11:05,390 வலது எல்லாவற்றையும் அதிகமாக உள்ளது. 920 01:11:05,390 --> 01:11:09,590 அதனால் என்ன, நம் நிலை இங்கே இருக்கும் - அல்லது, நாம் என்ன செய்ய போகிறோம்? 921 01:11:09,590 --> 01:11:11,840 [மாணவர், புரிந்து] >> சரி. 922 01:11:11,840 --> 01:11:17,400 திரும்பி உள்ளது (மதிப்பு, மர> இடது) 923 01:11:17,400 --> 01:11:26,860 அல்லது (மதிப்பு, மர> வலது) கொண்டுள்ளது. அவ்வளவு தான். 924 01:11:26,860 --> 01:11:29,080 மேலும், சில குறுகிய சுற்று மதிப்பீடு உள்ளது கவனிக்க 925 01:11:29,080 --> 01:11:32,520 அங்கு நாம் இடது கிளையில் மதிப்பு காண நேர்ந்தால், 926 01:11:32,520 --> 01:11:36,820 நாம் சரியான மரத்தை பார் வேண்டும். 927 01:11:36,820 --> 01:11:40,430 முழு செயல்பாடு என்று. 928 01:11:40,430 --> 01:11:43,690 இப்போது, செயலாற்றலாலோ அதை செய்வோம் 929 01:11:43,690 --> 01:11:48,060 இது குறைந்த நன்றாக இருக்கும். 930 01:11:48,060 --> 01:11:54,750 நாம் முனை * நடப்பு = மரம் வழக்கமான தொடக்க எடுக்க வேண்டும். 931 01:11:54,750 --> 01:12:03,250 அதே நேரத்தில் (நடப்பு! = NULL). 932 01:12:03,250 --> 01:12:08,600 விரைவில் ஒரு பிரச்சனை பார்க்க போகிறோம். 933 01:12:08,600 --> 01:12:12,250 அது நடப்பு - அவுட் இங்கே, நாங்கள் எப்போதும் இந்த உடைத்து என்றால், 934 01:12:12,250 --> 01:12:16,020 நாம் பார்க்க விஷயங்கள் ரன் அவுட், அதனால் தவறான திரும்ப. 935 01:12:16,020 --> 01:12:24,810 (நடப்பு-> மதிப்பு == மதிப்பு), உண்மையான திரும்பி இருந்தால். 936 01:12:24,810 --> 01:12:32,910 எனவே இப்போது, நாம் ஒரு இடத்தில் இருக்கும் - 937 01:12:32,910 --> 01:12:36,250 நாம் இடது அல்லது வலது செல்ல வேண்டும் என்று எனக்கு தெரியவில்லை. 938 01:12:36,250 --> 01:12:44,590 எனவே தன்னிச்சையாக, தான் மட்டும் விட்டு செல்லலாம். 939 01:12:44,590 --> 01:12:47,910 நான் வெளிப்படையாக நான் முழுமையாக எல்லாவற்றையும் கைவிட்டு விட்டேன் அங்கு ஒரு சிக்கல் அந்த ரன் - 940 01:12:47,910 --> 01:12:50,760 நான் மட்டும் எப்போதும் ஒரு மரத்தின் இடது பக்க பார்ப்பேன். 941 01:12:50,760 --> 01:12:56,050 நான் எதையும் ஒரு சரியான குழந்தை என்று எதையும் பார்க்க முடியாது. 942 01:12:56,050 --> 01:13:00,910 நான் இதை எப்படி சரி செய்வது? 943 01:13:00,910 --> 01:13:05,260 [மாணவர்] நீங்கள் ஒரு அடுக்கு இடது மற்றும் வலது கண்காணிக்க வேண்டும். 944 01:13:05,260 --> 01:13:13,710 [Bowden] சரி. எனவே அது செய்யலாம் 945 01:13:13,710 --> 01:13:32,360 struct பட்டியலில், கணு * n, பின்னர் முனை ** அடுத்த? 946 01:13:32,360 --> 01:13:40,240 நான் நன்றாக வேலை செய்கிறது என்று. 947 01:13:40,240 --> 01:13:45,940 இங்கு - நாம் இடது, அல்லது let's மேல் செல்ல வேண்டும். 948 01:13:45,940 --> 01:13:54,350 Struct பட்டியல் பட்டியலில் =, அதை தொடங்க வேண்டும் 949 01:13:54,350 --> 01:13:58,170 இந்த struct பட்டியலில் உள்ள அவுட். 950 01:13:58,170 --> 01:14:04,040 * பட்டியலில் = NULL. அதனால் எங்கள் இணைக்கப்பட்ட பட்டியலில் இருக்கும் நடக்கிறது 951 01:14:04,040 --> 01:14:08,430 நாம் தவிர்க்கப்பட்டது என்று subtrees வேண்டும். 952 01:14:08,430 --> 01:14:13,800 நாம், இப்போது விட்டு பயணிக்கின்றன போகிறீர்கள் 953 01:14:13,800 --> 01:14:17,870 ஆனால் நாம் தவிர்க்க முடியாமல் சரி வர வேண்டும் என்பதால், 954 01:14:17,870 --> 01:14:26,140 நாம் struct பட்டியல் உள்ளே வலது பக்க வைக்க போகிறோம். 955 01:14:26,140 --> 01:14:32,620 நாம், new_list அல்லது struct வேண்டும் 956 01:14:32,620 --> 01:14:41,080 struct பட்டியலில் *, new_list = malloc (sizeof (பட்டியல்)). 957 01:14:41,080 --> 01:14:44,920 நான் அந்த பிழை சோதனை புறக்கணிக்க போகிறேன், ஆனால் நீங்கள் அதை வெற்று பார்க்கவும் வேண்டும். 958 01:14:44,920 --> 01:14:50,540 அது சுட்டிக்காட்ட நடக்கிறது முனை New_list - 959 01:14:50,540 --> 01:14:56,890 நான் இங்கே அதை பற்றி ஏன் ஓ, என்று. அது இரண்டாவது struct பட்டியலில் சுட்டிக்காட்ட நடக்கிறது. 960 01:14:56,890 --> 01:15:02,380 அந்த பட்டியலை வேலை இணைக்கப்பட்ட மட்டும் எப்படி. 961 01:15:02,380 --> 01:15:04,810 இந்த ஒரு முழு எண்ணாக இணைக்கப்பட்ட பட்டியலில் போல 962 01:15:04,810 --> 01:15:06,960 தவிர, நாம் தான் முனை * உடன் எண்ணாக மாற்றுகிறோம். 963 01:15:06,960 --> 01:15:11,040 அது போலவே தான். 964 01:15:11,040 --> 01:15:15,100 எனவே new_list, எங்கள் new_list முனை மதிப்பு, 965 01:15:15,100 --> 01:15:19,120 நடப்பு-> சரியாக போகிறது. 966 01:15:19,120 --> 01:15:24,280 எங்கள் மதிப்பு new_list-> அடுத்த நமது உண்மையான பட்டியலில் இருக்கும், 967 01:15:24,280 --> 01:15:30,760 மற்றும் நாம் new_list சுட்டிக்காட்ட எங்கள் பட்டியலில் மேம்படுத்த போகிறோம். 968 01:15:30,760 --> 01:15:33,650 >> இப்போது நாம், இழுத்து விஷயங்கள் வழி ஒருவித வேண்டும் 969 01:15:33,650 --> 01:15:37,020 நாம் முழு இடது உபப்படிநிலையின் செல்கிறது போன்ற. 970 01:15:37,020 --> 01:15:40,480 இப்போது நாம், அது பொருட்களை வெளியே இழுக்க வேண்டும் 971 01:15:40,480 --> 01:15:43,850 போன்ற நடப்பு பூஜ்ய, நாங்கள் தான் தவறான திரும்ப விரும்பவில்லை. 972 01:15:43,850 --> 01:15:50,370 நாம் இப்போது நமது புதிய பட்டியலில் உள்ள வெளியே இழுக்க வேண்டும். 973 01:15:50,370 --> 01:15:53,690 இதை ஒரு எளிய வழி - நன்றாக, உண்மையில், இதை பல வழிகளில் உள்ளது. 974 01:15:53,690 --> 01:15:56,680 யாராவது ஒரு யோசனை? 975 01:15:56,680 --> 01:15:58,790 எங்கே நான் இந்த அல்லது எப்படி நான் இதை செய்ய வேண்டும் செய்ய வேண்டும்? 976 01:15:58,790 --> 01:16:08,010 நாம் ஒரு ஜோடி நிமிடங்கள், ஆனால் எந்த பரிந்துரைகளை? 977 01:16:08,010 --> 01:16:14,750 பதிலாக - ஒரு வழி, அதற்கு பதிலாக, எங்கள் நிலையை போது அவர், 978 01:16:14,750 --> 01:16:17,090 நாம் தற்போது தேடும், பூஜ்ய அல்ல 979 01:16:17,090 --> 01:16:22,340 அதற்கு பதிலாக நாம் நம் பட்டியலில் தன்னை பூஜ்ய வரை செல்ல தொடர போகிறோம். 980 01:16:22,340 --> 01:16:25,680 எங்கள் பட்டியலில், பூஜ்ய இருப்பது நிறைவடைகிறது நீங்கள் 981 01:16:25,680 --> 01:16:30,680 நாம், பார்க்க மீது தேட விஷயங்கள் ரன் அவுட். 982 01:16:30,680 --> 01:16:39,860 ஆனால் அந்த பட்டியலில் முதல் விஷயம் தான் முதல் முனை இருக்க போகிறது என்று அர்த்தம். 983 01:16:39,860 --> 01:16:49,730 முதல் காரியம் இருக்கும் - நாம் இனி பார்க்க வேண்டும். 984 01:16:49,730 --> 01:16:58,710 அதனால் பட்டியல்-> n எங்கள் மரம் இருக்கும். 985 01:16:58,710 --> 01:17:02,860 பட்டியல்-> அடுத்த பூஜ்ய போகிறது. 986 01:17:02,860 --> 01:17:07,580 இப்போது பட்டியலில் சமமாக பூஜ்ய இல்லை போது. 987 01:17:07,580 --> 01:17:11,610 நடப்பு எங்கள் பட்டியலில் இருந்து ஏதாவது இழுக்க வேண்டும். 988 01:17:11,610 --> 01:17:13,500 எனவே நடப்பு சம பட்டியல்-> n போகிறது. 989 01:17:13,500 --> 01:17:20,850 பின்னர் பட்டியலில் சமமாக பட்டியல்-> n போகிறது, அல்லது பட்டியலில்-> அடுத்த. 990 01:17:20,850 --> 01:17:23,480 நீங்கள் நடப்பு மதிப்பு சமம். 991 01:17:23,480 --> 01:17:28,790 இப்போது நாம் சரியான சுட்டிக்காட்டி நமது இடது சுட்டிக்காட்டி இரு சேர்க்க முடியும் 992 01:17:28,790 --> 01:17:32,900 நீண்ட அவர்கள் பூஜ்ய அல்ல என்று. 993 01:17:32,900 --> 01:17:36,390 இங்கு, நான் அந்த செய்திருக்க வேண்டும் நினைக்கிறேன் முதல் இடத்தில். 994 01:17:36,390 --> 01:17:44,080 நீங்கள் (நடப்பு-> சரி! = NULL) 995 01:17:44,080 --> 01:17:56,380 நாம் நம் பட்டியலில் அந்த முனை நுழைக்க போகிறோம். 996 01:17:56,380 --> 01:17:59,290 நீங்கள் (நடப்பு-> இடது), இந்த கூடுதல் வேலை கொஞ்சம் இருக்கிறது, ஆனால் அது நல்லது. 997 01:17:59,290 --> 01:18:02,690 நீங்கள் (நடப்பு-> இடது! = NULL), 998 01:18:02,690 --> 01:18:14,310 நாம், நமது இணைக்கப்பட்ட பட்டியலில் இடது நுழைக்க போகிறோம் 999 01:18:14,310 --> 01:18:19,700 மற்றும் அது இருக்க வேண்டும். 1000 01:18:19,700 --> 01:18:22,670 நாங்கள் மீண்டும் கூறு - வரை நாங்கள் எங்கள் பட்டியலில் ஏதாவது என, 1001 01:18:22,670 --> 01:18:26,640 நாம் பார்க்க மற்றொரு முனை வேண்டும். 1002 01:18:26,640 --> 01:18:28,920 எனவே, அந்த முனை பாருங்கள் 1003 01:18:28,920 --> 01:18:31,390 நாம் அடுத்த ஒரு நமது பட்டியலில் முன்னெடுத்து. 1004 01:18:31,390 --> 01:18:34,060 அந்த முனை நாம் தேடும் மதிப்பு இருந்தால், நாம் உண்மையான திரும்ப முடியும். 1005 01:18:34,060 --> 01:18:37,640 வேறு, நம் இரு இடது மற்றும் வலது subtrees செருக 1006 01:18:37,640 --> 01:18:40,510 அவர்கள் பூஜ்ய அல்ல வரை, எங்கள் பட்டியலில் 1007 01:18:40,510 --> 01:18:43,120 நாம் தவிர்க்க முடியாமல் அவர்கள் மீது போய் அந்த. 1008 01:18:43,120 --> 01:18:45,160 அவர்கள் பூஜ்ய இல்லை, நீங்கள் 1009 01:18:45,160 --> 01:18:47,950 நமது ரூட் சுட்டிக்காட்டி இரண்டு விஷயங்களை சுட்டிக்காட்டி, என்றால் 1010 01:18:47,950 --> 01:18:51,670 எங்கள் பட்டியலில் பூஜ்ய இருப்பது நிறைவடைகிறது மிகவும் பின் முதலில் நாம் ஒன்றை வெளியே. 1011 01:18:51,670 --> 01:18:56,890 பின்னர் நாங்கள் மீண்டும் இரண்டு விஷயங்களை வைத்து, அதனால் இப்போது எங்கள் பட்டியலில் அளவு 2 ஆகும். 1012 01:18:56,890 --> 01:19:00,030 , நாம் மீண்டும் சுழற்சி போகிறோம் நாம் தான் இழுக்க போகிறோம் 1013 01:19:00,030 --> 01:19:04,250 அது, நம் வேர் கணு இடது சுட்டிக்காட்டி சொல்கிறேன். 1014 01:19:04,250 --> 01:19:07,730 என்று நான் நடந்து கொண்டே இருப்பேன்; நாம் எல்லாவற்றையும் தேடுகிறது முடிவுக்கு வேண்டும். 1015 01:19:07,730 --> 01:19:11,280 >> இந்த குறிப்பிடத்தக்க இன்னும் சிக்கலான என்று அறிவிப்பு 1016 01:19:11,280 --> 01:19:14,160 சுழல்நிலை கரைசலில். 1017 01:19:14,160 --> 01:19:17,260 நான் பல முறை சொல்லிவிட்டேன் 1018 01:19:17,260 --> 01:19:25,120 சுழல்நிலை தீர்வாக தீர்வு பங்கேற்பு பொதுவான அதிகம் என்று. 1019 01:19:25,120 --> 01:19:30,820 இங்கே இந்த சுழல்நிலை தீர்வு என்ன என்பதை துல்லியமாக என்ன. 1020 01:19:30,820 --> 01:19:36,740 ஒரே மாற்றம் என்று பதிலாக உட்குறிப்பாக ஸ்டேக் பயன்படுத்தி, நிரல் ஸ்டாக், இது 1021 01:19:36,740 --> 01:19:40,840 நீங்கள் இன்னும் பார்க்க வேண்டும் என்ன கணுக்களின் தடம் உங்கள் வழி, 1022 01:19:40,840 --> 01:19:45,430 இப்போது நீங்கள் வெளிப்படையாக ஒரு இணைக்கப்பட்ட பட்டியலில் பயன்படுத்த வேண்டும். 1023 01:19:45,430 --> 01:19:49,070 என்ன முனை இன்னும் விஜயம் வேண்டும் இரண்டு சந்தர்ப்பங்களில் நீங்கள் தடம். 1024 01:19:49,070 --> 01:19:51,790 சுழல்நிலை வழக்கில் அது எளிதாக இருக்கும் என்பதால் ஒரு அடுக்கு 1025 01:19:51,790 --> 01:19:57,100 நிரல் ஸ்டேக் நீ செயல்படுத்தப்பட்டது. 1026 01:19:57,100 --> 01:19:59,550 இந்த இணைக்கப்பட்ட பட்டியலில், ஒரு அடுக்கு என்பதை நீங்கள் கவனிக்க. 1027 01:19:59,550 --> 01:20:01,580 நாம் தான் ஸ்டாக் வைக்க என்ன 1028 01:20:01,580 --> 01:20:09,960 நாம் அடுத்த பார்க்க ஸ்டேக் இழுக்கவும் போகிறோம் என்ன உடனடியாக ஆகும். 1029 01:20:09,960 --> 01:20:14,380 நாம் எந்த கேள்விகள் நேரம் போதவில்லை, ஆனால்? 1030 01:20:14,380 --> 01:20:23,530 [மாணவர், புரிந்து] 1031 01:20:23,530 --> 01:20:27,790 [Bowden] சரி. நாம் நமது இணைக்கப்பட்ட பட்டியலில் இல்லை என்றால், 1032 01:20:27,790 --> 01:20:30,150 தற்போதைய, இந்த பையன் சுட்டி போகிறது 1033 01:20:30,150 --> 01:20:34,690 இப்போது நாம் இந்த பையன் கவனம் நமது இணைக்கப்பட்ட பட்டியலில் முன்னேறும். 1034 01:20:34,690 --> 01:20:44,200 அந்த வரிசையில் இணைக்கப்பட்ட பட்டியலில் மேல் பயணித்து. 1035 01:20:44,200 --> 01:20:51,200 பின்னர் நாங்கள் இணைக்கப்பட்ட பட்டியலில் மற்றும் பொருட்களை விடுவிக்க வேண்டும் நினைக்கிறேன் 1036 01:20:51,200 --> 01:20:53,880 ஒருமுறை உண்மை அல்லது பொய் திரும்பும் முன், நாம் வேண்டும் 1037 01:20:53,880 --> 01:20:57,360 நமது இணைக்கப்பட்ட பட்டியலில் மீது மீண்டும் கூறு மற்றும் எப்போதும் கீழே இங்கே, நான் நினைக்கிறேன் 1038 01:20:57,360 --> 01:21:03,900 நாம் நடப்பு சரி சமமாக இல்லை என்றால், அதனால் இப்போது நாம் விடுவிக்க வேண்டும், அதை சேர்க்க 1039 01:21:03,900 --> 01:21:09,600 நடப்பு ஏனெனில், நன்றாக, நாம் முழுமையாக பட்டியல் மறந்துவிட்டீர்கள்? Yeah. 1040 01:21:09,600 --> 01:21:12,880 அதனால் நாம் இங்கு செய்ய வேண்டும். 1041 01:21:12,880 --> 01:21:16,730 சுட்டிக்காட்டி எங்கே? 1042 01:21:16,730 --> 01:21:23,320 நடப்பு பிறகு தான் - நாம் ஒரு struct பட்டியலில் * 10 அடுத்த பட்டியலில் சமமாக வேண்டும். 1043 01:21:23,320 --> 01:21:29,240 இலவச பட்டியல், பட்டியல் = temp. 1044 01:21:29,240 --> 01:21:32,820 மேலும் வழக்கில் நாம் உண்மையான திரும்பி அங்கு, நாம் மீண்டும் கூறு வேண்டும் 1045 01:21:32,820 --> 01:21:37,050 பொருட்களை பெறலாம் எங்கள் இணைக்கப்பட்ட பட்டியலில் எஞ்சிய மேல். 1046 01:21:37,050 --> 01:21:39,700 சுழல்நிலை தீர்வு பற்றி நல்ல விஷயம் பொருட்களை பெறலாம் 1047 01:21:39,700 --> 01:21:44,930 உங்களுக்கு நடக்கும் எந்த ஸ்டேக் ஆஃப் உறுத்தும் factorings பொருள். 1048 01:21:44,930 --> 01:21:50,720 நாம் கடினமான என்று-பற்றி குறியீடு 3 கோடுகள் போன்ற என்று ஒன்று இருந்து போயிருந்தேன் 1049 01:21:50,720 --> 01:21:57,520 குறிப்பிடத்தக்க பல என்று ஏதாவது கடினமான என்று-பற்றி குறியீடு கோடுகள். 1050 01:21:57,520 --> 01:22:00,620 மேலும் எந்த கேள்விகளையும்? 1051 01:22:00,620 --> 01:22:08,760 எல்லாம் சரி. நாம் நல்ல இருக்கும். பாய்! 1052 01:22:08,760 --> 01:22:11,760 [CS50.TV]