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 اے آر وائی کے درخت، جس میں صرف ایک عام پوائنٹر ہے ہیں 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 ان میں سے دونوں شہوت انگیز null ہونے جا رہے ہیں. 32 00:01:52,460 --> 00:01:57,870 یہ اتارنا null صرف، اور یہ کہ، شہوت انگیز null صرف ہو جائے گا جائے گا. 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 کے ساتھ 7 قدر، پھر بائیں سمت میں 3، 42 00:02:25,730 --> 00:02:32,760 تو دائیں طرف کے 9، اور پھر 6 3 حق ہے. " 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 کے ساتھ ایک نیا نوڈ تو، اور اسے ابتدائی طور پر لوڈ، اتارنا null اشارہ ہے. 50 00:02:57,140 --> 00:02:59,190 میں N. صرف ڈال دیتا ہوں 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 جو ابتدا میں صرف شہوت انگیز null کا کہنا ہے کہ. 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 کوئی بھی نوڈ ہے جو صرف اس کے بچوں کو، شہوت انگیز null ہے پتی ہے. 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 درخت کی اونچائی 'hops کی تعداد ہے آپ کو بنانا ہے 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 ہے، کریں گے تاہم اگر آپ hops کی تعداد شمار 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 اور یہ اشارہ صرف شہوت انگیز null ہیں. 133 00:08:43,750 --> 00:08:48,900 لیکن یہ ایک درست درخت ہے. جی ہاں؟ 134 00:08:48,900 --> 00:08:51,310 [Student کی] کیا اقدار دائیں طرف زیادہ ہونا پڑے گا؟ 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 اگر بائیں اور دائیں درست ہیں، اور پھر وہاں iterate. 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 اس subtree میں سب کچھ لازمی طور پر 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 تم اسے کس طرح کرتے خیال mathematically کی طرح ہے، 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 لیکن اگر میں کل تعداد، تو رقم بائیں طرف جا سکتے ہیں ن 180 00:12:15,090 --> 00:12:18,820 جمع رقم کو درست کرنے جا سکتے ہیں (ن) ہے - 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 کچھ وقت، آپ کو آپ کے لئے تلاش کر رہے ہیں میں قیمت یا تو تلاش کر سکتے یا آپ شہوت انگیز null میں چلے جائیں گے کریں گے، 198 00:13:22,800 --> 00:13:28,520 قیمت اشارہ درخت میں نہیں ہے. " 199 00:13:28,520 --> 00:13:32,450 میں درخت ہم پہلے redraw ہے، جو ایک دوسرے لے جائیں گے. 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 [Student کی] بائیں. >> جی ہاں. 210 00:14:27,340 --> 00:14:33,340 یہ نمایاں طور پر آسان ہے، سب تمہیں کیا کرنا ہے ایک درخت کے ممکن نوڈ کو اپنی طرف متوجہ ہے 211 00:14:33,340 --> 00:14:37,760 کی بجائے اپنے سر میں سوچنے کی کوشش کر رہے - اور اس کے بعد آپ کو مت پہنچاو 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 میں یہاں آتے ہیں، لیکن یہاں پر اب مجھے شہوت انگیز null میں ہوں. 225 00:15:42,100 --> 00:15:44,170 میں کیا کروں اگر میں نے شہوت انگیز null مارا ہے؟ 226 00:15:44,170 --> 00:15:47,440 [Student کی] جھوٹی واپس؟ >> جی ہاں. میں 10 نہیں ملا. 227 00:15:47,440 --> 00:15:49,800 1 تقریبا ایک جیسی معاملہ بننے جا رہا ہے، 228 00:15:49,800 --> 00:15:51,950 سوائے یہ صرف flipped رکھا جائے جا رہا ہے، کی بجائے تلاش 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 "سب سے پہلے ہم ایک بائنری درخت int اقدار پر مشتمل نوڈ کے لئے ایک نئی قسم کی تعریف کی ضرورت ہو گی. 236 00:16:19,170 --> 00:16:21,400 ذیل typedef boilerplate کا استعمال کرتے ہوئے، 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 تو boilerplate یہاں ڈال 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 [Student کی] اور تو Int دو اشارہ ہے؟ 243 00:16:46,520 --> 00:16:49,700 >> Int قیمت دو اشارہ؟ میں اشارہ کس طرح لکھ سکتا ہوں؟ 244 00:16:49,700 --> 00:16:58,440 [Student کی] 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 [Student کی] کسی کے پیٹنے، باہر نکلنے کی کوشش کر رہے ہیں. 272 00:20:08,080 --> 00:20:13,100 [Bowden] ان کے درخت کی تعمیر کے ساتھ آرام دہ اور پرسکون کوئی ہے؟ 273 00:20:13,100 --> 00:20:15,520 [Student کی] جی ہاں. یہ نہیں کیا ہے. >> یہ ٹھیک ہے. ہم صرف ختم کر سکتے ہیں - 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 [Student کی] جب آپ struct وضاحت، کچھ بھی initialized چیزیں ہیں؟ 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 یہ ڈیفالٹ کی طرف سے initialized نہیں ہے، یہ صرف اگر آپ کو ایک int اعلان کرنا ہے. 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 ابتدا کرنا چاہتا ہوں، اور چھوڑ دیا تو ٹھیک ہے، شہوت انگیز null شہوت انگیز null رکھا جائے اور 292 00:21:35,690 --> 00:21:41,570 یہ 9، شہوت انگیز null گے، شہوت انگیز null. 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 C، یا قیمت = 9، بائیں =. نل. 300 00:22:21,570 --> 00:22:24,540 میں ان کی علامت کے طور پر کرنے کی ضرورت کا اندازہ کر رہا ہوں. 301 00:22:24,540 --> 00:22:29,110 حق. = نل، تو اس طرح سے تم نہیں 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 کے بارے میں کیا قدر جا رہا ہے initialized. 305 00:22:41,920 --> 00:22:44,080 >> یہ وہ چیزیں ہیں جو میں سے ایک ہے - 306 00:22:44,080 --> 00:22:49,100 ہاں، تو سب سے زیادہ حصہ کے لئے، C + + سی کے superset ہے 307 00:22:49,100 --> 00:22:54,160 آپ C کوڈ لے کر سکتے ہیں، اسے ختم منتقل C + +، اس کی تیاری اور. 308 00:22:54,160 --> 00:22:59,570 یہ چیزیں ہیں جو C + + کی حمایت نہیں کرتا ہے میں سے ایک ہے، تاکہ لوگوں کو یہ نہیں کرنا ہیں. 309 00:22:59,570 --> 00:23:01,850 میں جانتا ہوں کہ اگر یہ ہی وجہ ہے وہ لوگ ہیں جن سے یہ نہیں کرنا ہیں نہیں، 310 00:23:01,850 --> 00:23:10,540 لیکن اگر جہاں میں اس کو استعمال کرنے کی ضرورت ہے C + + اور اس میں اس کا استعمال نہیں کر سکتے ہیں کے ساتھ مل کر کام کرنے کی ضرورت ہے. 311 00:23:10,540 --> 00:23:14,000 ایسی چیز ہے جس کی ایک مثال C + ہے + کے ساتھ کام نہیں کرتا 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 یہ خود کار طریقے سے کاسٹ میں نہیں ہوتا ہے C + +. 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 بہت سی چیزیں ہیں کہ C اور C + + پر بھی اختلاف نہیں ہے، 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 [Student کی] میں یہ 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 [طالب علم، unintelligible] جی ہاں >>. 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 [طالب علم، unintelligible] جڑ 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 کیونکہ یہ ایک ایسی contrived مثال کے طور پر یہ ہے کہ ہم جانتے ہیں کہ ہے 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 اگر (== نل node9) - میں نے یہ نہیں کرنا چاہتے تھے - 368 00:27:34,010 --> 00:27:40,950 1 واپس کریں، اور پھر ہم node9> کیا کر سکتے ہیں کیونکہ اب یہ پوائنٹر ہے، 369 00:27:40,950 --> 00:27:45,300 قیمت = 6، node9> چھوڑ نل =، 370 00:27:45,300 --> 00:27:48,930 node9> صحیح نل =، 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 اور یہ کسی حد تک APIs کے ہم Huffman کوڈنگ کے لئے فراہم کرتے ہیں کی طرح ہے. 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 اور یہاں ہم شہوت انگیز null واپس آ جانا چاہئے. 385 00:28:49,550 --> 00:28:52,690 ہر کوئی اس تقریب کی تعمیر ایک نوڈ پر اتفاق ہے؟ 386 00:28:52,690 --> 00:28:59,780 تو اب ہم صرف یہ ہے کہ دی قدر اور شہوت انگیز null اشارہ کے ساتھ کسی بھی نوڈ کی تعمیر پر کال کر سکتے ہیں. 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 [طالب علم، unintelligible] >> جی ہاں. اگر malloc میں ناکام رہے، شہوت انگیز null واپس آ جائیں گے. 397 00:30:11,660 --> 00:30:16,460 تو میں lazily اس نے ہر ایک کے لئے ایک شرط کرنے کے بجائے یہاں ڈال جا رہا ہوں. 398 00:30:16,460 --> 00:30:22,320 اگر (node9 == نل، یا -، بھی آسان 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 [Student کی] جھوٹی برابر ساتھ ساتھ، شہوت انگیز null ہے؟ 403 00:30:46,680 --> 00:30:51,290 [Bowden] کوئی صفر قدر غلط ہے. 404 00:30:51,290 --> 00:30:53,920 تو، شہوت انگیز null صفر قدر ہے. 405 00:30:53,920 --> 00:30:56,780 صفر صفر قدر ہے. جھوٹی صفر قدر ہے. 406 00:30:56,780 --> 00:31:02,130 بہت زیادہ صرف 2 صفر اقدار شہوت انگیز null صفر ہیں - کوئی 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 اگر ہم، طرح، نوڈ * یا نوڈ ایکس. 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 تو نوڈ جڑ یا نوڈ ایکس. 417 00:31:47,450 --> 00:31:53,410 ڈیفالٹ کی طرف سے، سب کچھ ہے کہ عالمی، اگر نہیں، تو واضح طور پر کسی قیمت initialized 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 شہوت انگیز null ہے، اور x.right شہوت انگیز null ہے. 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 [Student کی] structs دوسرے متغیر سے مختلف ہیں، اور متغیر ہیں 426 00:32:27,320 --> 00:32:31,400 ردی کی ٹوکری میں اقدار، ان zeros ہیں؟ 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 آپ اسے یا تو iteratively یا تکراری طور پر کر سکتے ہیں. 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 اب ہم recurse آسانی سے زیادہ کر سکتے ہیں. 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 >> [Student کی] میں نے ایک حل تکراری ہے. >> ٹھیک ہے، تکراری. 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 [Student کی] جی ہاں. تو میں نے ایک عارضی متغیر درخت کا پہلا نوڈ کو حاصل کرنے کے لئے. 462 00:35:25,780 --> 00:35:28,330 اور پھر میں صرف جبکہ TEMP برابر شہوت انگیز null نہیں ہوتا ہے کے ذریعے looped، 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 تو اس کے فوائد - یہ exits لوپ اور جھوٹے واپس. 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 اوہ، یہ ایک چھوٹا سا longish جا رہا ہے. 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 ضرور کیا گیا ہے ماضی میں quizzes 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 [Student کی] سب سے پہلے میں سے ایک ہے اگر یہ سچ ہے، ٹھیک ہے؟ 485 00:37:18,550 --> 00:37:25,570 [Bowden] جی ہاں. جس طرح سے میں نے ہمیشہ اسے پڑھا ہے، TEMP TEMP قیمت سے زیادہ قیمت کے برابر ہے، 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 [Student کی] جی ہاں. تو ہم اس بات کا یقین کر لیں کہ درخت پہلے، شہوت انگیز null نہیں ہے کر رہے ہیں، 495 00:38:08,340 --> 00:38:13,380 کیونکہ اگر درخت، شہوت انگیز null ہے تو یہ غلط ہے کیونکہ ہم نے اسے نہیں مل سکا ہے واپس جا رہا ہے. 496 00:38:13,380 --> 00:38:19,200 اور اگر اب بھی ایک درخت ہے، ہم میں جانے - ہم سب سے پہلے اگر قدر موجودہ نوڈ ہے چیک کرنے کے لیے ہے. 497 00:38:19,200 --> 00:38:23,740 سچ واپس اگر یہ ہے، اور اگر نہیں، تو ہم بائیں یا دائیں recurse. 498 00:38:23,740 --> 00:38:25,970 وہ آواز کیا مناسب ہے؟ >> مم ہمم. (معاہدہ) 499 00:38:25,970 --> 00:38:33,880 تو دیکھیں گے کہ یہ تقریبا - structurally حل تکراری کی طرح ہے. 500 00:38:33,880 --> 00:38:38,200 یہ صرف ہے کہ recursing کے بجائے، ہم نے تھوڑی دیر لوپ تھا. 501 00:38:38,200 --> 00:38:40,840 اور بیس یہاں صورت میں جہاں درخت برابر شہوت انگیز null نہیں ہوتا ہے 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 عام طور پر، میں ایک stylistic بات کے طور پر بہت سے لوگوں کو لگتا ہے کہ نہیں 512 00:39:31,060 --> 00:39:38,640 تیر کے نشان کے بعد ایک جگہ ڈال دیا ہے، لیکن مجھے لگتا ہے کہ اگر آپ مسلسل ہو، یہ ٹھیک ہے. 513 00:39:38,640 --> 00:39:44,320 اگر قیمت درخت قیمت سے بھی کم وقت ہے، ہم درخت کے بائیں پر recurse چاہتے ہیں، 514 00:39:44,320 --> 00:39:53,890 اور ہم درخت کے حق پر recurse کرنا چاہتے ہیں. 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 [Student کی] یہ سچ ہے؟ >> جی ہاں، کیونکہ، کچھ کے حقیقی 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 recurse بھی نہیں جا مزید نیچے لائن پر مشتمل ہے. 532 00:41:15,710 --> 00:41:20,980 ہم اس سے ایک قدم مزید لگ سکتے ہیں. 533 00:41:20,980 --> 00:41:29,490 واپس درخت برابر شہوت انگیز null اور اس کے سب نہیں ہے. 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 بجائے اس کے کہ میں سب کچھ - اگر ایسا ہے تو درخت برابر نہیں، شہوت انگیز null کرتا ہے - یا، اچھی طرح 538 00:41:47,320 --> 00:41:49,580 اگر درخت برابر شہوت انگیز null کرتا ہے، جو برا معاملہ ہے، 539 00:41:49,580 --> 00:41:54,790 اگر درخت، شہوت انگیز null برابر ہے، تو پہلی شرط باطل کی جا رہی ہے. 540 00:41:54,790 --> 00:42:00,550 تو کچھ کے ساتھ anded جھوٹے کیا جا رہا ہے؟ 541 00:42:00,550 --> 00:42:04,640 [Student کی] جھوٹی. >> جی ہاں. یہ اندازہ شارٹ سرکٹ کے دوسرے نصف ہے، 542 00:42:04,640 --> 00:42:10,710 اگر پیڑ برابر شہوت انگیز null نہیں ہے، تو ہم جا رہے ہیں بھی نہیں جانے کے لئے جہاں - 543 00:42:10,710 --> 00:42:14,930 یا اگر درخت برابر شہوت انگیز null کرتا ہے، تو ہم جا قدر == درخت قدر کرنا نہیں کر رہے ہیں. 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 تو اگر درخت برابر شہوت انگیز null کرتا ہے، یہ دوسری حالت seg غلطی کرنے جا رہا ہے، 547 00:42:25,860 --> 00:42:32,510 کیونکہ درخت> قیمت شہوت انگیز null محولہ لقب ضبطی ہے. 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 لیکن اگر (درخت نل =، اور درخت> قیمت == قیمت)، جو کچھ بھی کرتے ہیں. 552 00:42:59,380 --> 00:43:01,560 یہ ایک بہت عام شرط ہے، جہاں ہونے کے بجائے 553 00:43:01,560 --> 00:43:06,770 دو اگر میں اس کو توڑنے، جہاں پسند، درخت، شہوت انگیز null ہے؟ 554 00:43:06,770 --> 00:43:11,780 ٹھیک ہے، یہ، شہوت انگیز null نہیں ہے، تو اب درخت کی قیمت کے برابر قیمت ہے؟ یہ کرتے ہیں. 555 00:43:11,780 --> 00:43:17,300 اس کے بجائے، اس شرط یہ غلطی seg کبھی نہیں کرے گا 556 00:43:17,300 --> 00:43:21,220 کیونکہ یہ توڑ اگر یہ شہوت انگیز null ہونا ہوتا ہے. 557 00:43:21,220 --> 00:43:24,000 ٹھیک ہے، مجھے لگتا ہے کہ اگر آپ کے درخت میں ایک مکمل طور پر جعلی پوائنٹر ہے، یہ غلطی اب بھی seg کر سکتے ہیں، 558 00:43:24,000 --> 00:43:26,620 لیکن یہ غلطی seg نہیں کر سکتے ہیں اگر درخت، شہوت انگیز null ہے. 559 00:43:26,620 --> 00:43:32,900 اگر یہ شہوت انگیز null تھے، اسے توڑنے سے پہلے تم نے کبھی پہلے پوائنٹر dereferenced. 560 00:43:32,900 --> 00:43:35,000 [Student کی] اس نام نہاد سست اندازہ ہے؟ 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 آپ کو ایک کی قیمت کی قسم کا حساب کرنے کے لئے سے دعا گو ہیں، لیکن آپ کو فوری طور پر اس کی ضرورت نہیں ہے. 564 00:43:54,270 --> 00:43:59,040 تو جب تک آپ واقعی اس کی ضرورت ہے، اس کا اندازہ نہیں ہے. 565 00:43:59,040 --> 00:44:03,920 یہ بالکل نہیں ہے ایک ہی بات، لیکن Huffman 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 مثال کے طور پر اسٹریمز میں، جس میں infinitely طویل ہے. 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 آپ infinitely کئی تعداد کا تعین کر رہے ہیں، اور یہ کہ ممکن نہیں ہے. 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 اور صرف اس کا heck کے لئے لشکر 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 تمہیں صرف اتنا کرنا ہے کہ نیچے درخت iterate جب تک کہ آپ نوڈ حاصل کرنے کے لئے 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 تو نیچے درخت iterate، نیا نوڈ پتی نقطہ. 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 لیکن 9 7 بائیں تھا، اگر آپ نے پورے راستے iterated. 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 [Student کی] میں کرتے ہیں. >> ضرور. 633 00:49:05,480 --> 00:49:09,200 [طالب علم، unintelligible] 634 00:49:09,200 --> 00:49:14,390 [دیگر طالب علم، unintelligible] 635 00:49:14,390 --> 00:49:18,330 [Bowden] یہ تعریف کی ہے. ٹھیک ہے. کی وضاحت کرنا چاہتے ہیں؟ 636 00:49:18,330 --> 00:49:20,690 >> [Student کی] چونکہ ہم جانتے ہیں کہ ہم داخل کر رہے تھے 637 00:49:20,690 --> 00:49:24,060 درخت کے آخر میں نئے مراکز، 638 00:49:24,060 --> 00:49:28,070 میں نے درخت کے ذریعے iteratively looped 639 00:49:28,070 --> 00:49:31,360 جب تک میں ایک نوڈ جو اتارنا null نشاندہی کی ہے. 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 ہے کہ TEMP نوڈ نئے نوڈ ہے کہ اسے پیدا کیا گیا تھا کی طرف اشارہ، 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 [] Student کی اگر TEMP شہوت انگیز null ہے؟ >> جی ہاں. تو کس طرح آپ کو لوپ سے باہر ٹوٹ جاتا ہے اگر TEMP شہوت انگیز null ہے. 651 00:50:22,100 --> 00:50:30,220 لیکن کیا میں یہاں کیا کرتے ہیں؟ 652 00:50:30,220 --> 00:50:35,410 میں dereference TEMP، جو لامحالہ اتارنا null ہے. 653 00:50:35,410 --> 00:50:39,840 تو دوسری بات ہے آپ کیا کرنے کی ضرورت ہے نہ صرف ٹریک تک TEMP رکھنے شہوت انگیز null ہے، 654 00:50:39,840 --> 00:50:45,590 آپ کو ہر وقت والدین کی ٹریک رکھنا چاہتے ہیں. 655 00:50:45,590 --> 00:50:52,190 ہم نے بھی نوڈ * والدین چاہتے ہیں، مجھے لگتا ہے کہ ہم شہوت انگیز null میں پہلے میں رکھ سکتے ہیں. 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 اگر قیمت جو کچھ بھی اس سے بڑا ہے، تو TEMP = TEMP حق ہے. 659 00:51:03,950 --> 00:51:07,910 لیکن اس سے پہلے کہ ہم ایسا کرتے ہیں کہ، = TEMP والدین. 660 00:51:07,910 --> 00:51:14,500 یا والدین ہمیشہ برابر TEMP جا رہے ہو؟ یہ معاملہ ہے؟ 661 00:51:14,500 --> 00:51:19,560 اگر TEMP شہوت انگیز null نہیں ہے، تو میں نیچے منتقل کرنے کے لئے، کوئی بات نہیں کیا جا رہا ہوں، 662 00:51:19,560 --> 00:51:24,030 نوڈ جس کے لئے TEMP والدین ہے. 663 00:51:24,030 --> 00:51:27,500 تو والدین TEMP ہونا ہے، اور پھر میں TEMP منتقل نیچے. 664 00:51:27,500 --> 00:51:32,410 اب TEMP شہوت انگیز null ہے، لیکن بات یہ ہے کہ، شہوت انگیز null ہے کے والدین والدین پوائنٹس. 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 شہوت انگیز null برابر، جھوٹے واپس. 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 اگر درخت، شہوت انگیز null کے طور پر دور شروع ہوتا ہے ہم شہوت انگیز null درخت میں گزرے. 683 00:53:08,310 --> 00:53:12,650 مجھے لگتا ہے اس پر منحصر ہے کہ آپ کس طرح شہوت انگیز null درخت میں گزرنے والے کے رویے کی وضاحت. 684 00:53:12,650 --> 00:53:15,490 مجھے لگتا ہے کہ اگر آپ شہوت انگیز null درخت میں گزرتا ہے، 685 00:53:15,490 --> 00:53:17,520 پھر شہوت انگیز null درخت میں قدر داخل 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 اگر آپ شہوت انگیز null درخت میں گزر 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 لیکن ہم ایسا نہیں کرتے ہیں اگر درخت، شہوت انگیز null ہے، وہاں کچھ نہیں ہے کہ ہم اس کے بارے میں کیا کر سکتے ہیں ہے. 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 یہ چیز پر کس طرح iterating ہے، 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 ٹھیک ہے، یہ پوائنٹس ابھی شہوت انگیز null. 708 00:54:33,340 --> 00:54:38,130 میں کیا کرنا چاہتی ہوں یہ پوائنٹر نہیں شہوت انگیز null کی طرف اشارہ کرنے کے لئے جوڑتوڑ. 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 میں ٹریک اگر پوائنٹر شہوت انگیز null اشارہ کر رہا ہے دیکھنے کے لئے رکھ سکتے ہیں، 713 00:54:52,640 --> 00:54:54,580 اگر پوائنٹر اشارہ کر رہا ہے لوڈ، اتارنا null اور 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 پہلی چیزیں، اگر (درخت نل ==) 724 00:55:34,370 --> 00:55:37,550 مجھے لگتا ہے کہ ہم صرف جھوٹی واپس جا رہے ہیں. 725 00:55:37,550 --> 00:55:40,460 یہ آپ کے درخت شہوت انگیز null سے مختلف ہے. 726 00:55:40,460 --> 00:55:44,510 یہ اپنے جڑ پوائنٹر شہوت انگیز null ہونے کے پوائنٹر ہے 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 گھنڈی * جڑ نل =، 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 یا داخل - درخت، شہوت انگیز null نہیں ہے. 737 00:56:20,120 --> 00:56:24,630 یہاں. درخت، شہوت انگیز null نہیں ہے، * درخت خالی ہے، جو کہ ٹھیک ہے 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 لیکن اگر درخت، شہوت انگیز null ہے، اس کا مطلب ہے کہ میں صرف اتر آیا یہاں اور شہوت انگیز null نے کہا کہ. 741 00:56:34,750 --> 00:56:42,710 اس کا کوئی مطلب نہیں ہے. میں اس کے ساتھ کچھ نہیں کر سکتے. 742 00:56:42,710 --> 00:56:45,540 اگر درخت، شہوت انگیز null ہے، جھوٹے واپس. 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 [طالب علم، unintelligible] 746 00:56:55,030 --> 00:57:00,000 [Bowden] جی ہاں. لہذا اگر (* درخت == نل). 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 کبھی - * اگر، میرا لال پوائنٹر، کبھی، شہوت انگیز null ہے، 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 تو ن = نل اگر (ن)، جھوٹے واپس. 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 ہم شہوت انگیز null اشارہ کو تبدیل چیزیں ہم نے ان کی طرف اشارہ کرنے کے لئے کرنا چاہتے ہیں کی طرف اشارہ کر سکتے ہیں. 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 [Student کی] درخت قیمت ہے؟ 774 00:59:23,200 --> 00:59:27,490 [Bowden] تو یاد رکھو کہ میں فی الحال ہوں - 775 00:59:27,490 --> 00:59:31,260 [طالب علم، unintelligible] 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 [Student کی] ایک بار 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 تو ہے کہ اگر بائیں ختم شہوت انگیز null پوائنٹر ہونے، 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 [Student کی] کہ پوائنٹر پوائنٹر کیا ملے گا؟ 798 01:01:22,540 --> 01:01:30,940 [Bowden] یاد رکھیں کہ - *** tree.right ایک نوڈ ستارہ ہے. 799 01:01:30,940 --> 01:01:35,040 [طالب علم، unintelligible] >> جی ہاں. 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 [Student کی] سے زیادہ ہم پھر کیوں ہم دو اشارہ کا استعمال کرتے ہوئے کر رہے ہیں کر سکتا ہوں؟ 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 تو نوڈ جڑ * = جڑ اور عمومی میں نل، 4 ڈالیں. 811 01:02:30,540 --> 01:02:35,110 جڑ اس کے بعد کیا ہونے جا رہا ہے؟ 812 01:02:35,110 --> 01:02:37,470 [طالب علم، unintelligible] >> جی ہاں. 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 صورت میں جہاں درخت - جہاں جڑ شہوت انگیز null تھا، 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 بھی والدین کا ٹریک رکھنے، اور آپ ہر طرح iterate. 824 01:03:26,240 --> 01:03:30,140 اب میں اپنے والدین کی ہے، اور میں صرف اپنے والدین کا حق جو پوائنٹر ہے. 825 01:03:30,140 --> 01:03:35,640 اس کی بجائے اگر ہم اس iteratively کیا، یہ تھوڑی دیر لوپ کے ساتھ ایک ہی خیال تھا. 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 [Student کی] ہم سچ کہاں لوٹا سکتا ہوں؟ 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 [طالب علم، unintelligible] 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 میرے خیال میں یہ تسلیم کرتی ہے - جی سی سی اور بجنا 847 01:05:09,350 --> 01:05:12,610 نے ان کی اصلاح کی سطح کے لئے مختلف معانی ہے. 848 01:05:12,610 --> 01:05:17,870 میں کہتا ہوں کہ یہ اس بات کا یقین کر لیں کہ یہ پونچھ کے تکرار کو تسلیم کریں گے کے لئے 2 DashO ہے، کرنا چاہتے ہیں. 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 لیکن ہاں، مجھے لگتا ہے کہ یہ 2 DashO، 853 01:05:37,140 --> 01:05:40,580 اگر آپ کو 2 DashO کے ساتھ مرتب، اس کے دم کی تکرار کے لئے نظر آئے گا 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 اور اب ہمارے جبکہ لوپ جبکہ * رائج برابر شہوت انگیز null نہیں ہوتا ہے جا رہا ہے. 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 اور میں نے اسے TEMP فون، کیونکہ ہم نے پہلے سے ہی TEMP کا استعمال کرتے ہوئے کر رہے ہیں کریں گے. 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 = & (* TEMP) - چھوڑ>. 872 01:07:29,250 --> 01:07:32,730 اور اب، اس وقت، اس دیر لوپ کے بعد 873 01:07:32,730 --> 01:07:36,380 میں صرف ایسا کرتے ہیں کیونکہ شاید یہ آسان ہے کے بارے میں iteratively تکراری طور سے لگتا ہے، 874 01:07:36,380 --> 01:07:39,010 لیکن اس دیر لوپ کے بعد، 875 01:07:39,010 --> 01:07:43,820 * TEMP پوائنٹر ہم کو تبدیل کرنا چاہتے ہیں. 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 تو * TEMP والدین کا حق ہے، اور ہم اسے تبدیل براہ راست کر سکتے ہیں. 879 01:07:54,550 --> 01:08:05,860 یہاں تو نیچے، ہم * TEMP = 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 میں int حق میں اس پرچم کیوں ہے؟ 890 01:08:45,779 --> 01:08:49,290 اس کا کیا مطلب ہے؟ اوہ، یہ signifying ہے کہ 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 [طالب علم، unintelligible] >> جی ہاں. 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 تو سب سے پہلے یہ تکراری طور پر کرتے ہیں اور پھر ہم ایسا iteratively گے. 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 [طالب علم، unintelligible] 906 01:10:13,890 --> 01:10:18,230 [Bowden] تو اگر (درخت نل ==)، تو کیا؟ 907 01:10:18,230 --> 01:10:22,740 [Student کی] جھوٹی واپس. 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 [Student کی] درخت کی قیمت؟ >> جی ہاں. 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 ہم تو صرف ان کے traversing کر رہے ہیں. 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 [طالب علم، unintelligible] >> جی ہاں. 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 اب یہ iteratively دیتے، 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 جبکہ (رائج = نل!). 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 [Student کی] آپ کو ایک اسٹیک میں بائیں اور دائیں یاد رکھنا ہے. 944 01:13:05,260 --> 01:13:13,710 [Bowden] جی ہاں. تو اسے 945 01:13:13,710 --> 01:13:32,360 struct فہرست، نوڈ (ن) *، اور پھر نوڈ اگلے ***؟ 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 مجھے نظر انداز ہے کہ غلطی چیک کرنے جا رہا ہوں، لیکن آپ کو اگر یہ شہوت انگیز null چیک کرنے کے لیے کیا جانا چاہئے. 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 یہ ایک int منسلک فہرست کے طور پر ایک ہی ہے 962 01:15:04,810 --> 01:15:06,960 کے علاوہ ہم صرف نوڈ کے ساتھ * کی علامت int تبدیل کر رہے ہیں. 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 جیسا کہ ہم نے پورے بائیں subtree طے ہے. 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 جو ہم فی الحال دیکھ رہے ہیں، شہوت انگیز null نہیں ہے، 979 01:16:17,090 --> 01:16:22,340 اس کے بجائے ہم جانا جب تک ہماری فہرست میں ہی خالی ہے جاری رکھنے کے لئے جا رہے ہیں. 980 01:16:22,340 --> 01:16:25,680 تو اگر ہماری فہرست میں ختم ہو جاتی ہے، شہوت انگیز null ہونے کے 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 فہرست> اگلے شہوت انگیز null جا رہا ہے. 986 01:17:02,860 --> 01:17:07,580 اور اب جبکہ فہرست برابر شہوت انگیز null نہیں کرتا ہے. 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 جب تک کے طور پر وہ، شہوت انگیز null نہیں ہو. 993 01:17:32,900 --> 01:17:36,390 یہاں نیچے، مجھے لگتا ہے کہ ہم کیا کرنا چاہیے پہلی جگہ میں. 994 01:17:36,390 --> 01:17:44,080 اگر (رائج> حق نل! =) 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 اگر (رائج> بائیں نل! =) 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 جب تک ہم ہماری فہرست میں کچھ ہے - ہم iterate 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 جب تک وہ شہوت انگیز null نہیں ہیں، ہماری فہرست میں 1007 01:18:40,510 --> 01:18:43,120 تاکہ ہم ان پر لامحالہ. 1008 01:18:43,120 --> 01:18:45,160 تو اگر وہ شہوت انگیز null نہیں تھے، 1009 01:18:45,160 --> 01:18:47,950 اگر ہمارے جڑ پوائنٹر دو چیزوں کی طرف اشارہ کیا، 1010 01:18:47,950 --> 01:18:51,670 تو پھر ہم پہلے کچھ باہر نکال لیا تاکہ ہماری فہرست میں ختم ہو جاتی ہے، شہوت انگیز null ہونے کے. 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 ہم نے سب کچھ ختم looping ہوں گے، اور یہ ہو رہا صرف کرتے رہیں گے. 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 [طالب علم، unintelligible] 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 ہم اس لائن میں منسلک فہرست پر traversing کر رہے ہیں. 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 ہمارے منسلک کی فہرست پر iterate اور یہاں ہمیشہ نیچے، مجھے لگتا ہے، 1038 01:20:57,360 --> 01:21:03,900 اگر ہم رائج کو درست کرنے کے برابر نہیں ہے، اس کا اضافہ، تو اب ہم آزاد کرنا چاہتے ہیں 1039 01:21:03,900 --> 01:21:09,600 ، اچھی طرح رائج کیونکہ ہم فہرست کے بارے میں مکمل طور پر بھول گئے؟ جی ہاں. 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 اور کیس میں جہاں ہم سچ واپس، ہم iterate کی ضرورت ہے 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]