1 00:00:00,000 --> 00:00:02,500 [Powered by Google Translate] [دفعہ 7] [کم آرام دہ اور پرسکون] 2 00:00:02,500 --> 00:00:04,890 [نیٹ Hardison] [ہارورڈ یونیورسٹی] 3 00:00:04,890 --> 00:00:07,000 [یہ CS50 ہے.] [CS50.TV] 4 00:00:07,000 --> 00:00:09,080 >> دفعہ 7 میں آپ کا استقبال ہے. 5 00:00:09,080 --> 00:00:11,330 سمندری طوفان کے لئے سینڈی پر آپ کا شکریہ، 6 00:00:11,330 --> 00:00:13,440 اس ہفتے ایک عام سیکشن ہونے کے بجائے، 7 00:00:13,440 --> 00:00:17,650 ہم اس واک کے ذریعے کر رہے ہیں سوالات کے سیکشن کے ذریعے،. 8 00:00:17,650 --> 00:00:22,830 میں کے مسائل کے ساتھ ساتھ مندرجہ ذیل 6 تفصیلات قائم کیا جائے جا رہا ہوں، 9 00:00:22,830 --> 00:00:25,650 اور میں سوالات کے سب سے گزر رہا 10 00:00:25,650 --> 00:00:27,770 سوالات کے سیکشن کے ایک حصے. 11 00:00:27,770 --> 00:00:30,940 اگر اس کے ذہن میں کوئی سوالات ہیں، 12 00:00:30,940 --> 00:00:32,960 برائے مہربانی CS50 بحث پر ان پوسٹ. 13 00:00:32,960 --> 00:00:35,480 >> ٹھیک ہے. شروع کرنے کے دو 14 00:00:35,480 --> 00:00:40,780 ٹھیک ہے اب میں مسئلہ سیٹ کی تفصیلات کے صفحہ 3 میں دیکھ رہا ہوں. 15 00:00:40,780 --> 00:00:44,110 ہم سب سے پہلے بائنری درختوں کے بارے میں بات کر شروع کرنے جا رہے ہیں 16 00:00:44,110 --> 00:00:47,850 کے بعد ان کا اس ہفتے کا مسئلہ سیٹ کی مطابقت کا ایک بہت ہے - 17 00:00:47,850 --> 00:00:49,950 Huffman درخت انکوڈنگ. 18 00:00:49,950 --> 00:00:55,000 بہت پہلے ڈیٹا ڈھانچے میں سے ایک ہم نے CS50 پر کے بارے میں بات کی تھی صف تھا. 19 00:00:55,000 --> 00:01:00,170 یاد رکھیں کہ عناصر میں سے ایک صف میں ایک ہی تسلسل ہے - 20 00:01:00,170 --> 00:01:04,019 اسی قسم کی - یاد داشت میں ایک دوسرے کے ساتھ دیئے گئے حق محفوظ ہے. 21 00:01:04,019 --> 00:01:14,420 اگر میں ایک عددی صف ہے کہ میں اس انداز باکس تعداد integers کا استعمال کرتے ہوئے اپنی طرف متوجہ کر سکتے ہیں ہے - 22 00:01:14,420 --> 00:01:20,290 چلو کا کہنا ہے کہ میں پہلی باکس میں 5 ہے، میں نے دوسری میں 7 ہے، 23 00:01:20,290 --> 00:01:27,760 تو میں 8، 10، اور آخری خانے میں 20 ہے. 24 00:01:27,760 --> 00:01:33,000 اس صف کے بارے میں یاد رکھیں، دو تو واقعی اچھی چیزیں 25 00:01:33,000 --> 00:01:38,800 ہے کہ ہم اس مسلسل وقت کسی خاص عنصر کو رسائی حاصل ہے 26 00:01:38,800 --> 00:01:40,500  صف میں اگر ہم اس کے انڈیکس کو جانتے ہیں. 27 00:01:40,500 --> 00:01:44,670 مثال کے طور پر، اگر میں صف میں تیسرے عنصر پر قبضہ کرنا چاہتے ہیں - 28 00:01:44,670 --> 00:01:47,870 انڈیکس میں 2 ہماری صفر کی بنیاد پر تخکرمن کے نظام کا استعمال کرتے ہوئے - 29 00:01:47,870 --> 00:01:52,220 میں لفظی صرف ایک آسان حساب کا حساب کرنے کے لئے ہے، 30 00:01:52,220 --> 00:01:56,170 صف میں اس پوزیشن کو ہاپ، 31 00:01:56,170 --> 00:01:57,840 8 کہ وہاں محفوظ ہے ھیںچو، 32 00:01:57,840 --> 00:01:59,260 اور میں اسے اچھی طرح ہوں. 33 00:01:59,260 --> 00:02:03,350 >> اس صف کے بارے میں بری چیزوں کی ایک - کہ ہم کے بارے میں بات کی تھی 34 00:02:03,350 --> 00:02:05,010 ہم منسلک فہرستوں پر تبادلہ خیال کیا - 35 00:02:05,010 --> 00:02:09,120 کہ اگر میں اس صف میں ایک عنصر داخل کرنا چاہتے ہیں، 36 00:02:09,120 --> 00:02:11,090 میں کچھ کے ارد گرد منتقل کرنے کے لئے کی ضرورت کے لئے جا رہا ہوں. 37 00:02:11,090 --> 00:02:12,940 مثال کے طور پر، یہ یہیں صف 38 00:02:12,940 --> 00:02:16,850 کے مطابق ترتیب میں ہے - صعودی میں کے مطابق - 39 00:02:16,850 --> 00:02:19,440 5، پھر 7، تو 8، تو 10، اور پھر 20 - 40 00:02:19,440 --> 00:02:23,100 لیکن اگر میں اس صف میں 9 نمبر داخل کرنا چاہتے ہیں، 41 00:02:23,100 --> 00:02:27,460 میں کے کچھ عناصر کے لئے کی جگہ بنانے کے لئے منتقل کی ضرورت کے لئے جا رہا ہوں. 42 00:02:27,460 --> 00:02:30,440 ہم اس طرف متوجہ یہاں سے باہر جا سکتا ہے. 43 00:02:30,440 --> 00:02:35,650 میں 5، 7 کو منتقل کرنے کے لئے جا رہا ہوں، اور اس کے بعد 8؛ 44 00:02:35,650 --> 00:02:38,720 وقفے جہاں میں 9 رکھ سکتے ہیں بنانے کے، 45 00:02:38,720 --> 00:02:45,910 اور پھر 10 اور 20 9 کا حق میں جا سکتے ہیں. 46 00:02:45,910 --> 00:02:49,450 یہ درد کی طرح ہے کیونکہ بدترین حالات کی صورت میں - 47 00:02:49,450 --> 00:02:54,350 ہم داخل جب شروع میں یا آخر میں دشواری ہو رہی ہے یا تو 48 00:02:54,350 --> 00:02:56,040 صف، ہم کس طرح پر منحصر منتقل کر رہے ہیں - 49 00:02:56,040 --> 00:02:58,850 ہم نے ختم عناصر کے سب منتقل کرنے کر سکتے ہیں 50 00:02:58,850 --> 00:03:00,750 کہ ہم فی الحال صف میں ذخیرہ کرنے کر رہے ہیں. 51 00:03:00,750 --> 00:03:03,810 >> تو، اس کے ارد گرد کیا طریقہ تھا؟ 52 00:03:03,810 --> 00:03:09,260 اس کے ارد گرد اور طریقہ یہ ہے کہ ہمارے سے منسلک فہرست طریقہ ہے جہاں میں جانا تھا - 53 00:03:09,260 --> 00:03:19,820 عناصر 5، 7، 8، 10، اور 20 یاد میں ایک دوسرے کے ساتھ ذخیرہ کرنے کی بجائے - 54 00:03:19,820 --> 00:03:25,630 جو ہم بجائے جہاں کہیں بھی ہم ان سے محفوظ کرنا چاہتا تھا ان قسم ذخیرہ 55 00:03:25,630 --> 00:03:32,470 ان سے منسلک فہرست نوڈس میں جو میں نے یہاں سے باہر ڈرائنگ رہا ہوں، ایڈہاک کی طرح. 56 00:03:32,470 --> 00:03:42,060 اور پھر ہم نے انہیں مربوط مل کر ان اگلے اشارہ کا استعمال کرتے ہوئے. 57 00:03:42,060 --> 00:03:44,370 میں 5 سے 7 پوائنٹر کر سکتے ہیں، 58 00:03:44,370 --> 00:03:46,420 7 سے 8 پوائنٹر 59 00:03:46,420 --> 00:03:47,770 8 سے 10 پوائنٹر 60 00:03:47,770 --> 00:03:51,220 اور آخر میں، 10 سے 20 تک ایک پوائنٹر 61 00:03:51,220 --> 00:03:54,880 اور پھر 20، شہوت انگیز null پوائنٹر اشارہ ہے کہ کچھ بھی نہیں بچا ہے. 62 00:03:54,880 --> 00:03:59,690 ٹریڈ آف ہے کہ ہم یہاں ہیں 63 00:03:59,690 --> 00:04:05,360 کہ اب اگر ہم ہمارے کے مطابق کی فہرست میں 9 نمبر داخل کرنا چاہتے ہیں، 64 00:04:05,360 --> 00:04:08,270 ہم سب پر واجب ہے 9 کے ساتھ ایک نیا نوڈ بنانے کے، 65 00:04:08,270 --> 00:04:12,290 اسے مناسب جگہ پر کی طرف اشارہ، تار 66 00:04:12,290 --> 00:04:20,630 اور اس کے بعد دوبارہ تار 8 9 نیچے کی طرف اشارہ ہے. 67 00:04:20,630 --> 00:04:25,660 یہ بہت تیز ہے، سنبھالنے ہم بالکل پتہ ہے کہ جہاں ہم 9 کو شامل کرنے کے لئے چاہتے ہیں. 68 00:04:25,660 --> 00:04:32,610 لیکن اس کے بدلے میں تجارت بند یہ ہے کہ ہم اب تک رسائی مسلسل وقت کھو دیا ہے 69 00:04:32,610 --> 00:04:36,230 ہمارے اعداد و شمار کے ڈھانچے میں کسی خاص عنصر. 70 00:04:36,230 --> 00:04:40,950 مثال کے طور پر، اگر میں اس سے منسلک فہرست میں چوتھا عنصر تلاش کرنا چاہتے ہیں، 71 00:04:40,950 --> 00:04:43,510 میں کی فہرست کے شروع میں شروع کرنے کے لئے کی ضرورت کے لئے جا رہا ہوں 72 00:04:43,510 --> 00:04:48,930 اور نوڈ کی طرف سے نوڈ گنتی کے ذریعے اپنے راستے کو کام جب تک میں چوتھے ایک ملے. 73 00:04:48,930 --> 00:04:55,870 >> کے لئے ایک لنک کی فہرست سے بہتر تک رسائی کی کارکردگی کو حاصل کرنے کے لئے - 74 00:04:55,870 --> 00:04:59,360 بلکہ فوائد کہ ہم نے کچھ کو برقرار رکھنے 75 00:04:59,360 --> 00:05:01,800 - کے اندراج کے وقت کی شرائط میں ایک لنک کی فہرست سے 76 00:05:01,800 --> 00:05:05,750 ایک بائنری درخت تھوڑا اور میموری کو استعمال کرنے کی ضرورت پر کی جا رہی ہے. 77 00:05:05,750 --> 00:05:11,460 خاص طور پر، صرف ایک بائنری درخت نوڈ میں ایک پوائنٹر ہونے کے بجائے میں سب کچھ - 78 00:05:11,460 --> 00:05:13,350 فہرست سے منسلک کی طرح نوڈ ہے - 79 00:05:13,350 --> 00:05:16,950 ہم بائنری درخت نوڈ پر ایک دوسرے پوائنٹر کو شامل کرنے جا رہے ہیں. 80 00:05:16,950 --> 00:05:19,950 کی بجائے صرف اگلے عنصر ایک پوائنٹر ہے، 81 00:05:19,950 --> 00:05:24,420 ہم ایک بائیں بچے اور ایک صحیح بچے کو ایک پوائنٹر کے لئے جا رہے ہیں. 82 00:05:24,420 --> 00:05:26,560 >> کی ایک تصویر دیکھ کر اپنی طرف متوجہ کیا ہے کہ اصل کی طرح لگتا ہے. 83 00:05:26,560 --> 00:05:31,350 ایک بار پھر، میں ان باکس اور تیر کو استعمال کرنے کے لئے جا رہا ہوں. 84 00:05:31,350 --> 00:05:37,150 ایک بائنری درخت نوڈ صرف ایک سادہ باکس کے ساتھ شروع کر دیں گے. 85 00:05:37,150 --> 00:05:40,940 یہ قیمت کے لئے ایک جگہ ہے جا رہا ہے، 86 00:05:40,940 --> 00:05:47,280 اور پھر یہ بھی بائیں بچے اور دائیں بچے کے لئے ایک جگہ ہے جا رہا ہے. 87 00:05:47,280 --> 00:05:49,280 میں نے ان سے یہاں لیبل جا رہا ہوں. 88 00:05:49,280 --> 00:05:57,560 ہم بائیں بچہ جا رہے ہیں، اور پھر ہم صحیح بچے کے لئے جا رہے ہیں. 89 00:05:57,560 --> 00:05:59,920 ایسا کرنے کے بہت سے مختلف طریقے ہیں. 90 00:05:59,920 --> 00:06:02,050 ، کی جگہ اور سہولت کے لئے کبھی کبھی 91 00:06:02,050 --> 00:06:06,460 میں یہ اصل میں اپنی طرف متوجہ کی طرح میں نیچے پر یہاں کیا کر رہا ہوں گے 92 00:06:06,460 --> 00:06:10,910 جہاں میں سب سے اوپر کی قیمت میں جا رہا ہوں، 93 00:06:10,910 --> 00:06:14,060 اور پھر نیچے دائیں دائیں بچے، 94 00:06:14,060 --> 00:06:16,060 نیچے بائیں اور بائیں بچہ. 95 00:06:16,060 --> 00:06:20,250 ، اس کے سب سے اوپر تصویر پر واپس جانا 96 00:06:20,250 --> 00:06:22,560 ہم سب سے اوپر کی قیمت میں ہے، 97 00:06:22,560 --> 00:06:25,560 تو ہم بائیں بچے پوائنٹر ہے، اور پھر ہم پوائنٹر صحیح بچے ہے. 98 00:06:25,560 --> 00:06:30,110 >> مسئلہ سیٹ کی تفصیلات میں، 99 00:06:30,110 --> 00:06:33,110 ہم ایک نوڈ جو 7 قدر ہے ڈرائنگ کے بارے میں بات کرتے ہیں، 100 00:06:33,110 --> 00:06:39,750 اور پھر پوائنٹر بائیں بچے شہوت انگیز null ہے، اور حق بچے پوائنٹر شہوت انگیز null ہے. 101 00:06:39,750 --> 00:06:46,040 ہم نے خلا میں دارالحکومت نل یا تو کے لئے لکھ سکتے ہیں 102 00:06:46,040 --> 00:06:51,610 دونوں بائیں بچے اور دائیں بچے یا ہم اس اخترن سلیش کو اپنی طرف متوجہ کر سکتے ہیں 103 00:06:51,610 --> 00:06:53,750 باکس میں سے ہر ایک کے ذریعے اس بات کی نشاندہی کرتا ہے کہ یہ شہوت انگیز null ہے. 104 00:06:53,750 --> 00:06:57,560 میں ہے کہ صرف اس وجہ سے کہ آسان ہے کے لئے جا رہا ہوں. 105 00:06:57,560 --> 00:07:03,700 تم یہاں کیا دیکھ ایک بہت سادہ بائنری درخت نوڈ diagramming کے دو طریقے ہیں 106 00:07:03,700 --> 00:07:07,960 ہم 7 قدر اور جہاں اتارنا null بچے اشارہ ہے. 107 00:07:07,960 --> 00:07:15,220 >> ہمارے کس طرح منسلک کی فہرست کے ساتھ کے بارے میں تفصیلات کے مذاکرات کا دوسرا حصہ - 108 00:07:15,220 --> 00:07:18,270 یاد رکھو، ہم صرف ایک کی فہرست میں سب سے پہلا عنصر پر منعقد پڑا 109 00:07:18,270 --> 00:07:20,270 مکمل فہرست کو یاد کرنے کی - 110 00:07:20,270 --> 00:07:26,140 اور اسی طرح ایک بائنری درخت کے ساتھ، ہم صرف ایک پوائنٹر پر درخت کے انعقاد ہے 111 00:07:26,140 --> 00:07:31,120 کے لئے مکمل آنکڑا ڈھانچہ پر کنٹرول برقرار رکھنے کے لئے. 112 00:07:31,120 --> 00:07:36,150 درخت کا یہ خصوصی عنصر نے درخت کی جڑ نوڈ کو کہا جاتا ہے. 113 00:07:36,150 --> 00:07:43,360 مثال کے طور پر، اگر یہ ایک نوڈ - 7 قیمت پر مشتمل نوڈ 114 00:07:43,360 --> 00:07:45,500 شہوت انگیز null بائیں اور دائیں بچے اشارہ کے ساتھ - 115 00:07:45,500 --> 00:07:47,360 ہمارے درخت میں صرف قیمت تھے، 116 00:07:47,360 --> 00:07:50,390 تو یہ ہمارا روٹ نوڈ ہو جائے گی. 117 00:07:50,390 --> 00:07:52,240 یہ ہمارے درخت کی بہت آغاز ہے. 118 00:07:52,240 --> 00:07:58,530 ہم اس چھوٹے سے زیادہ واضح طور پر دیکھ کر ایک بار ہم نے ہماری درخت زیادہ نوڈس انہوں نے مزید کہا شروع کر سکتے ہیں. 119 00:07:58,530 --> 00:08:01,510 چلو، مجھے ایک نئے صفحے سے ھیںچ لیں. 120 00:08:01,510 --> 00:08:05,000 >> اب ہم ایک درخت ہے جو جڑ 7 ہے اپنی طرف متوجہ کرنے کے لئے جا رہے ہیں، 121 00:08:05,000 --> 00:08:10,920 اور بائیں، بچے، اور صحیح بچے کی 9 اندر اندر 3. 122 00:08:10,920 --> 00:08:13,500 ایک بار پھر، یہ بہت آسان ہے. 123 00:08:13,500 --> 00:08:26,510 ہم نے 7 ملی ہے، 3 کے لئے ایک نوڈ، 9 کے لئے ایک نوڈ سے اپنی طرف متوجہ کریں، 124 00:08:26,510 --> 00:08:32,150 اور میں 7 پوائنٹر بائیں بچے 3 مشتمل نوڈ کی طرف اشارہ مقرر کرنے جا رہا ہوں، 125 00:08:32,150 --> 00:08:37,850 اور 9 پر مشتمل نوڈ 7 مشتمل نوڈ کے دائیں بچے پوائنٹر. 126 00:08:37,850 --> 00:08:42,419 اب 3 اور 9 کے بعد سے کسی بھی بچے نہیں ہے، 127 00:08:42,419 --> 00:08:48,500 ہم اپنے بچے کے اشارہ کے تمام لوڈ، اتارنا null قائم کرنے جا رہے ہیں. 128 00:08:48,500 --> 00:08:56,060 یہاں، ہمارے درخت کی جڑ نمبر 7 پر مشتمل نوڈ کے مساوی ہے. 129 00:08:56,060 --> 00:09:02,440 تم نے یہ دیکھا کر سکتے ہیں اگر ہم نے اس روٹ نوڈ پوائنٹر ہے، 130 00:09:02,440 --> 00:09:07,330 تو ہم اپنے درخت کے ذریعے چل سکتے ہیں اور دونوں بچے نوڈس تک رسائی حاصل کر سکتے ہیں - 131 00:09:07,330 --> 00:09:10,630 دونوں 3 اور 9. 132 00:09:10,630 --> 00:09:14,820 درخت پر ہر ایک نوڈ پر اشارہ کو برقرار رکھنے کی ضرورت ہے نہیں ہے. 133 00:09:14,820 --> 00:09:22,080 ٹھیک ہے. اب ہم اس آریھ پر دوسری نوڈ پر شامل کرنے کے لئے جا رہے ہیں. 134 00:09:22,080 --> 00:09:25,370 ہم 6 مشتمل نوڈ کو شامل کرنے کے لئے جا رہے ہیں، 135 00:09:25,370 --> 00:09:34,140 اور ہم 3 مشتمل نوڈ کے دائیں بچے کے طور پر شامل کرنے جا رہے ہیں. 136 00:09:34,140 --> 00:09:41,850 ایسا کرنے کے لیے، میں 3 نوڈ میں کہ شہوت انگیز null پوائنٹر مٹانے کے لئے جا رہا ہوں 137 00:09:41,850 --> 00:09:47,750 اور یہ تار 6 مشتمل نوڈ کی طرف اشارہ ہے. ٹھیک ہے. 138 00:09:47,750 --> 00:09:53,800 >> اس وقت، اصطلاحات کا ایک تھوڑا سا پر. 139 00:09:53,800 --> 00:09:58,230 ، وجہ ہے کہ یہ خاص طور پر ایک بائنری درخت کہا جاتا ہے شروع 140 00:09:58,230 --> 00:10:00,460 یہ ہے کہ یہ دو بچے اشارہ ہے. 141 00:10:00,460 --> 00:10:06,020 کے دیگر قسم کے درخت ہے کہ زیادہ بچے اشارہ ہے ہیں. 142 00:10:06,020 --> 00:10:10,930 خاص طور پر، آپ کو ایک مسئلہ 5 سیٹ میں کی کوشش کرو 'کیا. 143 00:10:10,930 --> 00:10:19,310 آپ اس کوشش میں ہے کہ محسوس کریں گے، آپ کو مختلف بچوں کے 27 مختلف اشارہ تھا - 144 00:10:19,310 --> 00:10:22,410 انگریزی حروف تہجی میں 26 حروف میں سے ہر ایک کے لئے ایک، 145 00:10:22,410 --> 00:10:25,410 اور پھر apostrophe کے لئے 27th - 146 00:10:25,410 --> 00:10:28,900 ایسا ہے، تو وہ درخت کی ایک قسم کے لئے اسی طرح کی ہے. 147 00:10:28,900 --> 00:10:34,070 لیکن یہاں، یہ بائنری کے بعد سے، ہم صرف دو بچے اشارہ ہے. 148 00:10:34,070 --> 00:10:37,880 >> اس روٹ نوڈ ہے کہ ہم کے بارے میں بات کرنے کے علاوہ میں، 149 00:10:37,880 --> 00:10:41,470 ہم بھی کیا گیا ہے اس لفظ کے ارد گرد پھینک 'بچے. 150 00:10:41,470 --> 00:10:44,470 کیا اس کا مطلب یہ ہے کے لئے ایک نوڈ دوسرے نوڈ کا ایک بچہ ہے؟ 151 00:10:44,470 --> 00:10:54,060 یہ لفظی مطلب یہ ہے کہ ایک بچے نوڈ کو دوسرے نوڈ کا ایک بچہ ہے 152 00:10:54,060 --> 00:10:58,760 جب کہ دوسرے نوڈ اس کے بچے کو اس نوڈ پر کی طرف اشارہ مقرر اشارہ میں سے ایک ہے. 153 00:10:58,760 --> 00:11:01,230 کنکریٹ کی شرائط میں یہ ڈال، 154 00:11:01,230 --> 00:11:11,170 اگر 3 7 کا بچہ اشارہ کی ایک کی طرف سے نشاندہی کی ہے، اس وقت 3 7 ایک بچہ ہے. 155 00:11:11,170 --> 00:11:14,510 اگر ہم اعداد و شمار کیا 7 بچے ہیں - 156 00:11:14,510 --> 00:11:18,510 اچھا، ہم دیکھتے ہیں، کہ 7 3 پوائنٹر اور 9 پوائنٹر ہے، 157 00:11:18,510 --> 00:11:22,190 تو 9 اور 3 7 بچے ہیں. 158 00:11:22,190 --> 00:11:26,650 نو کوئی بچے نہیں ہیں کیونکہ اس کے بچے اشارہ شہوت انگیز null ہیں، 159 00:11:26,650 --> 00:11:30,940 اور صرف 3 ایک بچہ، 6 ہے. 160 00:11:30,940 --> 00:11:37,430 چھ بھی کوئی بچے نہیں ہیں کیونکہ اس کے اشارہ کے دونوں شہوت انگیز null، جو ہم نے ابھی اپنی طرف متوجہ کریں گے. 161 00:11:37,430 --> 00:11:45,010 >> کے علاوہ، ہم ایک خاص نوڈ کے والدین کے بارے میں بھی بات کرتے ہیں، 162 00:11:45,010 --> 00:11:51,100 اور یہ ہے، جیسا کہ آپ کی توقع چاہتے ہیں، تو اس بچے کو وضاحت کی الٹ ہے. 163 00:11:51,100 --> 00:11:58,620 دو کی بجائے جیسا کہ آپ انسانوں کے ساتھ کی توقع کر سکتے ہیں - ہر نوڈ صرف ایک والدین ہیں. 164 00:11:58,620 --> 00:12:03,390 مثال کے طور پر، 3 والدین 7 ہے. 165 00:12:03,390 --> 00:12:10,800 9 کے والدین بھی 7 ہے، اور والدین کا 6 3 ہے. زیادہ نہیں. 166 00:12:10,800 --> 00:12:15,720 ہم دادا دادی اور پوتے کے بارے میں بات کرنے کے لئے بھی شرائط ہیں، 167 00:12:15,720 --> 00:12:18,210 اور عام طور پر ہم پتروں کے بارے میں بات کرتے ہیں 168 00:12:18,210 --> 00:12:20,960 اور ایک خاص نوڈ کی سنتان. 169 00:12:20,960 --> 00:12:25,710 نوڈ کے پرکھا - یا باپ دادا کو ایک نوڈ سے، بلکہ - 170 00:12:25,710 --> 00:12:32,730 ہیں نوڈس ہے کہ جڑ سے اس نوڈ کے راستے پر جھوٹ. 171 00:12:32,730 --> 00:12:36,640 مثال کے طور پر، اگر میں نوڈ 6 بجے دیکھ رہا ہوں، 172 00:12:36,640 --> 00:12:46,430 تو باپ دادا دونوں 3 اور 7 کے لئے جا رہے ہیں. 173 00:12:46,430 --> 00:12:55,310 9 کی آباؤ اجداد، مثال کے طور پر، کر رہے ہیں - اگر میں نوڈ 9 بجے دیکھ رہا ہوں - 174 00:12:55,310 --> 00:12:59,990 تو 9 پرکھا 7 ہے. 175 00:12:59,990 --> 00:13:01,940 اور اولاد بالکل ریورس ہیں. 176 00:13:01,940 --> 00:13:05,430 اگر میں 7 کے خاندان کے تمام کو دیکھنے کے لئے چاہتے ہیں، 177 00:13:05,430 --> 00:13:11,020 تو میں اس کے نیچے نوڈس کے تمام کو دیکھنے کے لئے ہے. 178 00:13:11,020 --> 00:13:16,950 لہذا، میں 3، 9، اور 6 7 کے خاندان کے طور پر تمام ہے. 179 00:13:16,950 --> 00:13:24,170 >> آخری مدت کہ ہم کے بارے میں بات کریں گے، ایک بھائی ہونے کا یہ تصور ہے. 180 00:13:24,170 --> 00:13:27,980 بھائی بہن کی تعداد - خاندان کے ان شرائط پر ساتھ بعد کی قسم - 181 00:13:27,980 --> 00:13:33,150 نوڈس جو درخت میں ایک ہی سطح پر ہیں. 182 00:13:33,150 --> 00:13:42,230 تو، 3 اور 9 بہن بھائیوں ہیں کیونکہ وہ درخت میں ایک ہی سطح پر ہیں. 183 00:13:42,230 --> 00:13:46,190 وہ دونوں ایک ہی والدین، 7 ہے. 184 00:13:46,190 --> 00:13:51,400 6 بھائی بہن ہے کیونکہ 9 کسی بھی بچے نہیں ہے. 185 00:13:51,400 --> 00:13:55,540 اور 7 کسی بھی بہن بھائیوں کو نہیں ہے کیونکہ یہ ہمارے درخت کی جڑ ہے، 186 00:13:55,540 --> 00:13:59,010 اور کبھی صرف 1 جڑ ہے. 187 00:13:59,010 --> 00:14:02,260 کے لئے 7 بہن بھائیوں وہاں 7 اوپر ایک نوڈ ہوگا. 188 00:14:02,260 --> 00:14:07,480 7 کے والدین، جس میں 7 کیس درخت کی جڑ اب نہیں ہو گی ہو گی. 189 00:14:07,480 --> 00:14:10,480 اس کے بعد 7 نئے والدین ایک بچہ بھی ہوگا، 190 00:14:10,480 --> 00:14:16,480 اور یہ کہ بچے کو 7 بھائی ہو جائے گی. 191 00:14:16,480 --> 00:14:21,040 >> ٹھیک ہے. پر جا رہے ہیں. 192 00:14:21,040 --> 00:14:24,930 ، جب ہم ہمارے بائنری درختوں کی بحث کا آغاز کیا 193 00:14:24,930 --> 00:14:28,790 ہم کہ ہم کس طرح ان کے لئے استعمال کرنے کے لئے جا رہے تھے کے بارے میں بات کی 194 00:14:28,790 --> 00:14:32,800 arrays اور منسلک فہرستوں پر دونوں کا فائدہ حاصل کریں. 195 00:14:32,800 --> 00:14:37,220 اور جس طرح سے ہم ایسا کرنے کے لئے جا رہے ہیں اس کا حکم جائیداد کے ساتھ ہے. 196 00:14:37,220 --> 00:14:41,080 ہم کا کہنا ہے کہ ایک بائنری درخت حکم دیا جاتا ہے تفصیلات کے مطابق، 197 00:14:41,080 --> 00:14:45,740 اگر ہمارے درخت میں ہر نوڈ کے لئے، بائیں جانب اس کی اولاد کے سب - 198 00:14:45,740 --> 00:14:48,670 بائیں بچے اور بائیں بچے کی اولاد کے تمام - 199 00:14:48,670 --> 00:14:54,510 کم اقدار، اور دائیں جانب نوڈس - 200 00:14:54,510 --> 00:14:57,770 صحیح بچے اور صحیح بچے کی اولاد کے تمام - 201 00:14:57,770 --> 00:15:02,800 موجودہ نوڈ کی قدر ہے کہ ہم دیکھ رہے ہیں سے زیادہ نوڈس ہے. 202 00:15:02,800 --> 00:15:07,850 بس سادگی کے لئے، ہم یہ فرض ہے کہ ہمارے درخت میں کوئی ڈوپلیکیٹ نوڈس نہیں ہیں جا رہے ہیں. 203 00:15:07,850 --> 00:15:11,180 مثال کے طور پر، ہم نے اس درخت میں کیس سے نمٹنے کے نہیں کر رہے ہیں 204 00:15:11,180 --> 00:15:13,680 ہم جڑ جہاں 7 قدر ہے 205 00:15:13,680 --> 00:15:16,720  اور پھر ہم بھی قدر دوسری جگہوں پر درخت میں 7 ہے. 206 00:15:16,720 --> 00:15:24,390 اس صورت میں، آپ کو نوٹس، گے کہ اس درخت کو واقعی حکم دیا جاتا ہے. 207 00:15:24,390 --> 00:15:26,510 ہم نے جڑ 7 قدر ہے. 208 00:15:26,510 --> 00:15:29,720 7 بائیں کو سب کچھ - 209 00:15:29,720 --> 00:15:35,310 اگر میں ان بہت کم نمبروں کی سب یہاں کالعدم - 210 00:15:35,310 --> 00:15:40,450 7 بائیں سب کچھ - 3 اور 6 - 211 00:15:40,450 --> 00:15:49,410 ان اقدار دونوں 7 سے کم اور صحیح سب کچھ - - جس میں صرف 9 ہے 212 00:15:49,410 --> 00:15:53,450 7 سے بڑا ہے. 213 00:15:53,450 --> 00:15:58,650 >> یہ صرف حکم دیا ان اقدار پر مشتمل درخت نہیں ہے، 214 00:15:58,650 --> 00:16:03,120 لیکن ان میں سے چند اپنی طرف متوجہ. 215 00:16:03,120 --> 00:16:05,030 اصل میں ہے طریقوں کہ ہم یہ کر سکتے ہیں کی ایک پوری گچرچھا ہے. 216 00:16:05,030 --> 00:16:09,380 میں آشلپی صرف چیزوں کو آسان جہاں رکھنے کے لئے استعمال کرنے کے لئے جا رہا ہوں - 217 00:16:09,380 --> 00:16:11,520 بلکہ پوری باکس اور تیر ڈرائنگ سے میں سب کچھ - 218 00:16:11,520 --> 00:16:14,220 میں صرف تعداد کو اپنی طرف متوجہ کرنے اور ان سے منسلک تیر شامل کی جا رہی ہوں. 219 00:16:14,220 --> 00:16:22,920 ، ہم اپنے اصل درخت پھر لکھیں گے جہاں ہم 7 سال کی تھی شروع، اور پھر 3، 220 00:16:22,920 --> 00:16:25,590 اور پھر 3 6 کا حق واپس کی طرف اشارہ کیا، 221 00:16:25,590 --> 00:16:30,890 اور 7 ایک صحیح بچے کہ 9 سال کی تھی. 222 00:16:30,890 --> 00:16:33,860 ٹھیک ہے. ایک اور طریقہ ہے کہ ہم اس درخت کو لکھ سکتے ہیں کیا کیا ہے؟ 223 00:16:33,860 --> 00:16:38,800 کی بجائے 3 7 کے بائیں بچے، 224 00:16:38,800 --> 00:16:41,360 ہم بھی 6 7 کے بائیں بچے کر سکتے ہیں، 225 00:16:41,360 --> 00:16:44,470 اور پھر 3 6 کے بائیں بچے. 226 00:16:44,470 --> 00:16:48,520 اس درخت کی طرح ابھی یہاں دیکھو جہاں میں 7 ہے، 227 00:16:48,520 --> 00:16:57,860 تو 6، تو 3، اور حق پر 9. 228 00:16:57,860 --> 00:17:01,490 ہم نے ہماری جڑ نوڈ کے طور پر 7 کی ضرورت نہیں ہے. 229 00:17:01,490 --> 00:17:03,860 ہم نے ہماری جڑ نوڈ کے طور پر 6 بھی کر سکتے ہیں. 230 00:17:03,860 --> 00:17:06,470 کیا اس طرح نظر آئے گا؟ 231 00:17:06,470 --> 00:17:09,230 اگر ہم نے اس کا حکم دیا ملکیت کو برقرار رکھنے کے لئے جا رہے ہیں، 232 00:17:09,230 --> 00:17:12,970 6 بائیں کو سب کچھ اس سے کم ہونا ہے. 233 00:17:12,970 --> 00:17:16,540 صرف ایک امکان ہے، اور یہ کہ 3. 234 00:17:16,540 --> 00:17:19,869 لیکن اس وقت 6 کے دائیں بچے کے طور پر، ہم نے دو امکانات ہیں. 235 00:17:19,869 --> 00:17:25,380 سب سے پہلے، ہم 7 ہے اور پھر سکتا ہے 9، 236 00:17:25,380 --> 00:17:28,850 یا ہم اسے اپنی طرف متوجہ کر سکتے ہیں - جیسا کہ میں یہاں کیا کر رہا ہوں - 237 00:17:28,850 --> 00:17:34,790 ، جہاں ہم نے 6 کے دائیں بچے کے طور پر 9 ہے 238 00:17:34,790 --> 00:17:39,050 اور پھر 9 کے بائیں بچے کے طور پر 7. 239 00:17:39,050 --> 00:17:44,240 >> اب، 7 اور 6 جڑ کے لئے ہی ممکن اقدار نہیں ہیں. 240 00:17:44,240 --> 00:17:50,200 ہم نے 3 جڑ کر سکتے ہیں. 241 00:17:50,200 --> 00:17:52,240 اگر 3 جڑ ہے تو کیا ہوتا ہے؟ 242 00:17:52,240 --> 00:17:54,390 یہاں چیزیں تھوڑا سا دلچسپ ملتا ہے. 243 00:17:54,390 --> 00:17:58,440 تین کوئی اقدار نہیں کرتا ہے جو اس سے کم ہے، 244 00:17:58,440 --> 00:18:02,070 درخت کی کہ پوری بائیں جانب اتارنا null جا رہا ہے. 245 00:18:02,070 --> 00:18:03,230 آمدید کچھ وہاں جا نہیں ہے. 246 00:18:03,230 --> 00:18:07,220 صعودی میں صحیح کرنے کے لئے، ہم چیزوں کی فہرست کر سکتے ہیں. 247 00:18:07,220 --> 00:18:15,530 ہم نے 3، پھر 6، تو 7، تو 9 کر سکتے ہیں. 248 00:18:15,530 --> 00:18:26,710 یا، ہم 3 کرتے ہیں، تو 6، کر سکتے ہیں تو 9، 7 تو. 249 00:18:26,710 --> 00:18:35,020 یا، ہم 3 کرتے ہیں، تو 7، کر سکتے ہیں تو 6، 9 تو. 250 00:18:35,020 --> 00:18:40,950 یا، 3، 7 - نہیں، اصل، ہم 7 نہیں کر سکتا. 251 00:18:40,950 --> 00:18:43,330 کہ وہاں ہمارے ایک بات ہے. 252 00:18:43,330 --> 00:18:54,710 ہم 9 کرتے ہیں، اور پھر 9 سے ہم 6 کرتے ہیں اور پھر 7 سکتے ہیں کر سکتے ہیں. 253 00:18:54,710 --> 00:19:06,980 یا، ہم 3 کرتے ہیں، تو 9، کر سکتے ہیں تو 7، اور پھر 6. 254 00:19:06,980 --> 00:19:12,490 >> ایک بات یہ ہے کہ یہاں آپ کی توجہ اپنی طرف متوجہ 255 00:19:12,490 --> 00:19:14,510 ہے کہ ان درختوں کو ایک چھوٹا سا عجیب نظر آنے والے ہیں. 256 00:19:14,510 --> 00:19:17,840 اگر خاص طور پر، ہم دائیں جانب 4 درختوں پر دیکھو - 257 00:19:17,840 --> 00:19:20,930 میں ان کے سرکل یہاں کریں گے - 258 00:19:20,930 --> 00:19:28,410 ان درختوں کو ایک لنک کی فہرست کی طرح تقریبا بالکل نظر آتے ہو. 259 00:19:28,410 --> 00:19:32,670 ہر نوڈ صرف ایک بچہ ہے، 260 00:19:32,670 --> 00:19:38,950 اور اسی طرح ہم نے مثال کے طور پر اس ڈھانچے پیڑ کی طرح ہے کہ ہم دیکھتے ہیں کے کسی بھی نہیں، 261 00:19:38,950 --> 00:19:44,720  یہاں یہ ایک نیچے بائیں واحد درخت میں. 262 00:19:44,720 --> 00:19:52,490 یہ درخت اصل میں بائنری درخت degenerate کہا جاتا ہے، 263 00:19:52,490 --> 00:19:54,170 اور ہم مستقبل میں ان کے بارے میں بات کریں گے - 264 00:19:54,170 --> 00:19:56,730 خاص طور پر اگر آپ پر دوسرے کمپیوٹر سائنس کورس کرنے کے لئے جانا. 265 00:19:56,730 --> 00:19:59,670 یہ درخت degenerate ہیں. 266 00:19:59,670 --> 00:20:03,780 وہ بہت ہی مفید نہیں ہو کیونکہ، یقینا، یہ ساخت خود فراہم کرتا ہے 267 00:20:03,780 --> 00:20:08,060  ایک لنک کی فہرست کے لئے اسی طرح کی اوقات تلاش کرنے کے لئے. 268 00:20:08,060 --> 00:20:13,050 ہم اضافی میموری کا فائدہ اٹھا کر حاصل نہیں ہے - یہ اضافی پوائنٹر - 269 00:20:13,050 --> 00:20:18,840 ہماری ساخت کی وجہ سے اس طرح سے خراب ہے. 270 00:20:18,840 --> 00:20:24,700 بجائے جاؤ اور بائنری درخت ہے جو جڑ 9 ہے اپنی طرف متوجہ، 271 00:20:24,700 --> 00:20:27,220 جس میں آخری مقدمہ ہے کہ ہم ہوگا، 272 00:20:27,220 --> 00:20:32,380 ہم بجائے ہیں، اس وقت، یہ دوسری مدت کے بارے میں تھوڑا بہت بات کرنے جا 273 00:20:32,380 --> 00:20:36,150 کہ ہم استعمال کرتے ہیں جب درخت، جو اونچائی کہا جاتا ہے کے بارے میں بات کر رہی ہے. 274 00:20:36,150 --> 00:20:45,460 >> ایک درخت کی اونچائی جڑ سے سب سے زیادہ دور نوڈ دوری ہے، 275 00:20:45,460 --> 00:20:48,370 بلکہ hops کی تعداد ہے کہ آپ کے لئے کرنا ہوگا 276 00:20:48,370 --> 00:20:53,750 جڑ سے شروع کرتے ہیں اور پھر درخت میں نوڈ سب سے زیادہ دور میں ختم. 277 00:20:53,750 --> 00:20:57,330 اگر ہم ان درختوں میں سے کچھ ہے کہ ہم یہیں تیار کیا ہے، دیکھو، 278 00:20:57,330 --> 00:21:07,870 ہم نے 3 میں دیکھ رہا ہوں کہ اگر ہم نے سب سے اوپر بائیں کونے میں اس درخت کو لے اور ہم شروع کر سکتے ہیں، 279 00:21:07,870 --> 00:21:14,510 تو ہم 1 ہاپ 6 حاصل کرنے کے لئے، 7 حاصل کرنے کے لئے ایک دوسرے ہاپ بنانے کے لئے ہے، 280 00:21:14,510 --> 00:21:20,560 اور ایک تہائی ہاپ 9 حاصل کرنے کے لئے. 281 00:21:20,560 --> 00:21:26,120 تو، اس درخت کی اونچائی 3 ہے. 282 00:21:26,120 --> 00:21:30,640 ہم نے اس سبز کے ساتھ بیان کردہ دوسرے درخت کے لئے ایک ہی مشق کر سکتے ہیں، 283 00:21:30,640 --> 00:21:40,100 اور ہم دیکھتے ہیں کہ ان درختوں کی سب سے اونچائی بھی ہے یقینا 3. 284 00:21:40,100 --> 00:21:45,230 یہ کیا کرتا ہے ان degenerate کا حصہ ہے - 285 00:21:45,230 --> 00:21:53,750 کہ ان کی اونچائی صرف ایک پورے درخت میں مراکز کی تعداد کے مقابلے میں کم ہے. 286 00:21:53,750 --> 00:21:58,400 اگر ہم دوسری طرف اس دوسرے درخت ہے کہ لال کا گھرا ہے، میں دیکھتا ہوں، 287 00:21:58,400 --> 00:22:03,920 ہم دیکھتے ہیں کہ سب سے زیادہ دور پتی نوڈس 6 اور 9 ہیں - 288 00:22:03,920 --> 00:22:06,940 چھوڑ دیتا ہے وہ نوڈس کہ کوئی بچے ہیں کیا جا رہا ہے. 289 00:22:06,940 --> 00:22:11,760 تو، کے لئے جڑ نوڈ سے کسی بھی 6 یا 9 حاصل کرنے کے لئے، 290 00:22:11,760 --> 00:22:17,840 ہم ایک ہاپ 7 سے حاصل کرنے کے لئے تو اور 9 حاصل کرنے کے لئے ایک دوسرے ہاپ، 291 00:22:17,840 --> 00:22:21,240 اور اسی طرح، 7 سے صرف ایک دوسرے ہاپ 6 حاصل کرنے کے لئے. 292 00:22:21,240 --> 00:22:29,080 تو، یہاں اس درخت کی اونچائی صرف 2 ہے. 293 00:22:29,080 --> 00:22:35,330 تم واپس جاؤ اور دوسرے درخت میں سے سب کے لئے کر سکتے ہیں کہ ہم نے پہلے بات چیت کی 294 00:22:35,330 --> 00:22:37,380 7 اور 6 کے ساتھ شروع 295 00:22:37,480 --> 00:22:42,500 آپ کو تلاش کریں گے اور یہ کہ ان پیڑوں میں سے سب سے اونچائی بھی ہے 2. 296 00:22:42,500 --> 00:22:46,320 >> وجہ ہے ہم کے بارے میں بات کر رہے بائنری درخت کو حکم دیا 297 00:22:46,320 --> 00:22:50,250 اور کیوں ہے وہ ڈاؤن لوڈ، اتارنا ہیں کیونکہ آپ ان کے ذریعے تلاش کر سکتے ہیں 298 00:22:50,250 --> 00:22:53,810 ایک بہت ہی کے مطابق صف پر تلاش کرنے کا ایک طریقہ ہے. 299 00:22:53,810 --> 00:22:58,720 یہی وہ جگہ ہے جہاں ہم کہ بہتر تلاش وقت حاصل کرنے کے بارے میں بات کرتے ہیں 300 00:22:58,720 --> 00:23:02,730 سادہ منسلک فہرست پر. 301 00:23:02,730 --> 00:23:05,010 ایک لنک کی فہرست کے ساتھ - - اگر آپ کو ایک مخصوص عنصر کو تلاش کرنا چاہتے ہیں 302 00:23:05,010 --> 00:23:07,470 تم بہترین لکیری تلاش کے کچھ کیا کرنے جا رہے ہو 303 00:23:07,470 --> 00:23:10,920 آپ کو ایک فہرست اور ہاپ ایک کی طرف سے ایک کے آغاز میں کہاں سے شروع - 304 00:23:10,920 --> 00:23:12,620 ایک نوڈ کی طرف سے ایک نوڈ - 305 00:23:12,620 --> 00:23:16,060 مکمل فہرست ہے جب تک کہ آپ جو کچھ بھی آپ کے لئے تلاش کر رہے ہیں کے ذریعے. 306 00:23:16,060 --> 00:23:19,440 جبکہ، اگر آپ کو ایک بائنری درخت ہے کہ اس اچھی شکل میں محفوظ ہے، 307 00:23:19,440 --> 00:23:23,300 آپ کو ایک بائنری جا تلاش کے بھی حاصل کر سکتے ہیں ہے 308 00:23:23,300 --> 00:23:25,160 آپ اور کہاں فتح تقسیم 309 00:23:25,160 --> 00:23:29,490 اور ہر قدم پر درخت کی مناسب نصف کے ذریعے تلاش. 310 00:23:29,490 --> 00:23:32,840 چلو، یہ کیسے کام کرتا ہے کو دیکھنے کے. 311 00:23:32,840 --> 00:23:38,850 >> اگر ہم - پھر ہماری اصل درخت واپس جا - 312 00:23:38,850 --> 00:23:46,710 ہم 7 بجے شروع ہم نے بائیں جانب 3 ہے، دائیں طرف کے 9، 313 00:23:46,710 --> 00:23:51,740 اور ہم نے 3 کے نیچے 6 ہے. 314 00:23:51,740 --> 00:24:01,880 اگر ہم اس پیڑ میں 6 نمبر کے لئے تلاش کرنا چاہتے ہیں ہیں، ہم جڑ میں شروع کروں گا. 315 00:24:01,880 --> 00:24:08,910 ہم قدر ہم کے لئے، 6 کہنا تلاش کر رہے ہیں کا آپس میں موازنہ کریں گے، 316 00:24:08,910 --> 00:24:12,320 نوڈ کہ ہم فی الحال میں، 7 تلاش کر رہے ہیں میں ذخیرہ کی قیمت، 317 00:24:12,320 --> 00:24:21,200 تلاش کہ 6 یقینا سے کم 7 ہے، تو ہم بائیں منتقل کریں گے. 318 00:24:21,200 --> 00:24:25,530 اگر 6 کی قیمت 7 سے بڑا رہا تھا، ہم اس کی بجائے حق پر کریں گے میں منتقل کردیا گیا ہے. 319 00:24:25,530 --> 00:24:29,770 چونکہ ہم جانتے ہیں کہ - ہمارے حکم دیا بائنری درخت کی ساخت کی وجہ سے - 320 00:24:29,770 --> 00:24:33,910 7 سے کم اقدار کی سب 7 بائیں سے محفوظ رکھا جائے جا رہے ہیں، 321 00:24:33,910 --> 00:24:40,520 کوئی فکر کرنے کی بھی درخت کی دائیں جانب کے ذریعے تلاش کرنے کی ضرورت ہے. 322 00:24:40,520 --> 00:24:43,780 ایک بار جب ہم بائیں منتقل اور اب ہم 3 مشتمل نوڈ میں ہیں، 323 00:24:43,780 --> 00:24:48,110 ہم اس ایک ہی موازنہ پھر سے کرتے ہیں جہاں ہم نے 3 اور 6 کا آپس میں موازنہ کر سکتے ہیں. 324 00:24:48,110 --> 00:24:52,430 اور ہم یہ محسوس کرتے ہیں کہ جبکہ 6 - قدر ہم کے لئے تلاش کر رہے ہیں - 3 سے بڑھ کر ہے، 325 00:24:52,430 --> 00:24:58,580 ہم 3 مشتمل نوڈ کے دائیں جانب جا سکتے ہیں. 326 00:24:58,580 --> 00:25:02,670 کوئی بائیں جانب ہے، تو ہم اس کو نظرانداز کیا جا سکتا ہے. 327 00:25:02,670 --> 00:25:06,510 لیکن ہم صرف یہ جانتے ہیں کہ کیونکہ ہم خود درخت کی طرف دیکھ رہے ہیں، 328 00:25:06,510 --> 00:25:08,660 ہم دیکھتے ہیں اور یہ کہ درخت کوئی بچے نہیں ہیں کر سکتے ہیں. 329 00:25:08,660 --> 00:25:13,640 >> یہ بھی بہت آسان ہے اس درخت میں سے 6 دیکھو، اگر ہم یہ کام کر رہے خود کر رہے ہیں انسان کے طور پر، 330 00:25:13,640 --> 00:25:16,890 لیکن ایک کمپیوٹر کی طرح اس عمل میکانکی کی پیروی کرے گا 331 00:25:16,890 --> 00:25:18,620 واقعی الگورتھم کو سمجھتے ہیں. 332 00:25:18,620 --> 00:25:26,200 اس وقت، اب ہم ایک نوڈ کہ 6 پر مشتمل ہے میں تلاش کر رہے ہیں، 333 00:25:26,200 --> 00:25:29,180 اور ہم 6 قیمت کے لئے تلاش کر رہے ہیں، 334 00:25:29,180 --> 00:25:31,740 ایسا ہے، تو بے شک، ہم مناسب نوڈ تلاش کر لیا ہے. 335 00:25:31,740 --> 00:25:35,070 ہم درخت میں 6 قیمت مل گیا ہے، اور ہم اپنی تلاش کو روکنا کر سکتے ہیں. 336 00:25:35,070 --> 00:25:37,330 اس وقت کیا ہو رہا ہے پر منحصر ہے، 337 00:25:37,330 --> 00:25:41,870 ہم کہہ سکتے ہیں، جی ہاں، ہم 6 قیمت مل گیا ہے، یہ ہمارے درخت میں موجود ہے. 338 00:25:41,870 --> 00:25:47,640 یا، اگر ہم ایک نوڈ کو شامل کرنے کے لئے یا کچھ کی منصوبہ بندی کر رہے ہیں، ہم اس وقت ایسا کر سکتے ہیں. 339 00:25:47,640 --> 00:25:53,010 >> چلو ایک جوڑے lookups صرف یہ کس طرح کام کرتا ہے دیکھنے کے لئے. 340 00:25:53,010 --> 00:25:59,390 چلو، کیا ہوا اگر ہم اور 10 قیمت تلاش کرنے کی کوشش کر رہے تھے ہوتا ہے کو دیکھو. 341 00:25:59,390 --> 00:26:02,970 اگر ہم 10 قیمت پر نظر تھے، ہم جڑ میں شروع ہو جائے گی. 342 00:26:02,970 --> 00:26:07,070 ہم دیکھتے ہیں کہ 7 سے 10 بڑی اور عظیم چیز ہے، تو ہم کو درست کرنے میں منتقل ہوتا ہے. 343 00:26:07,070 --> 00:26:13,640 ہم 9 10 9 موازنہ اور چاہتے ہیں دیکھتے ہیں کہ یقینا 9 سے کم 10 ہے. 344 00:26:13,640 --> 00:26:16,210 تو پھر، ہم حق میں منتقل کرنے کی کوشش کریں گے. 345 00:26:16,210 --> 00:26:20,350 لیکن ہم اس وقت محسوس کرتے ہیں، چاہتے ہیں کہ ہم شہوت انگیز null نوڈ میں ہیں. 346 00:26:20,350 --> 00:26:23,080 وہاں کچھ بھی نہیں ہے. وہاں کچھ بھی نہیں ہے 10 کہاں ہونا چاہئے. 347 00:26:23,080 --> 00:26:29,360 اس کا ہے جہاں ہم ناکامی کی رپورٹ کر سکتے ہیں - ہے کہ واقعی کوئی درخت میں 10. 348 00:26:29,360 --> 00:26:35,420 اور آخر میں، صورت میں جہاں ہم نے درخت میں سے 1 نظر کرنے کی کوشش کر رہے ہیں کے ذریعے جانا. 349 00:26:35,420 --> 00:26:38,790 یہ کیا اگر ہم نے 10 نظر آتے کو درست کرنے کے بجائے کے علاوہ ہوتا ہے، اسی طرح ہے، 350 00:26:38,790 --> 00:26:41,260 ہم بائیں طرف جانے کے لئے جا رہے ہیں. 351 00:26:41,260 --> 00:26:46,170 ہم نے 7 بجے شروع کرتے ہیں اور دیکھتے ہیں کہ 1 7 سے کم ہے، تو ہم بائیں منتقل کریں. 352 00:26:46,170 --> 00:26:51,750 ہم نے 3 سے ملتا ہے اور دیکھتے ہیں کہ 1 3 سے کم ہے، تو پھر ہم بائیں طرف منتقل کرنے کے لئے کی کوشش کرتے ہیں. 353 00:26:51,750 --> 00:26:59,080 اس وقت ہم نے ایک لوڈ، اتارنا null نوڈ ہے، تو پھر ہم ناکامی کی رپورٹ کر سکتے ہیں. 354 00:26:59,080 --> 00:27:10,260 >> اگر آپ کو بائنری درختوں کے بارے میں کے بارے میں مزید جاننے کے لئے چاہتے ہیں، 355 00:27:10,260 --> 00:27:14,420 تفریح ​​بہت کم مسائل ہیں کہ آپ ان کے ساتھ کیا کر سکتے ہیں کی ایک پوری چڑھانے ہیں. 356 00:27:14,420 --> 00:27:19,450 میں ان diagrams کی طرف سے ایک ڈرائنگ مشق کا مشورہ دیتے ہیں 357 00:27:19,450 --> 00:27:21,910 مختلف اقدامات کے ذریعے بعد 358 00:27:21,910 --> 00:27:25,060 کیونکہ یہ سپر ہاتھ میں آئے گا 359 00:27:25,060 --> 00:27:27,480 نہ صرف جب تم Huffman انکوڈنگ مسئلہ سیٹ کر رہے ہیں 360 00:27:27,480 --> 00:27:29,390 بلکہ مستقبل کے کورسز میں - 361 00:27:29,390 --> 00:27:32,220 صرف سیکھنے کس طرح ان اعداد و شمار کے ڈھانچے کو اپنی طرف متوجہ اور مسائل کے ذریعے لگتا ہے 362 00:27:32,220 --> 00:27:38,000 کے ساتھ قلم اور کاغذ یا، اس کیس میں رکن، اور stylus. 363 00:27:38,000 --> 00:27:41,000 >> اگرچہ اس وقت، ہم کچھ کوڈنگ پریکٹس کرنا منتقل جا رہے ہیں 364 00:27:41,000 --> 00:27:44,870 اور اصل میں ان بائنری درخت کے ساتھ ادا کرتے ہیں اور دیکھتے ہیں. 365 00:27:44,870 --> 00:27:52,150 میں اپنے کمپیوٹر پر واپس سوئچ جا رہا ہوں. 366 00:27:52,150 --> 00:27:58,480 CS50 چلائیں یا CS50 خالی جگہوں کا استعمال کرتے ہوئے کی بجائے سیکشن کے اس حصے کے لئے، 367 00:27:58,480 --> 00:28:01,500 میں اس آلے کو استعمال کرنے کے لئے جا رہا ہوں. 368 00:28:01,500 --> 00:28:04,950 >> مسئلہ سیٹ کی تفصیلات کے ساتھ ساتھ بعد 369 00:28:04,950 --> 00:28:07,740 میں دیکھ رہا ہوں کہ میں نے آلات پر کھولنے والے ہوں، 370 00:28:07,740 --> 00:28:11,020 میرے ڈراپ باکس فولڈر کے لئے، ایک دفعہ 7 نامی فولڈر بنائیں، 371 00:28:11,020 --> 00:28:15,730 اور پھر کہا جاتا binary_tree.c فائل تشکیل دیں. 372 00:28:15,730 --> 00:28:22,050 یہاں ہم چلے. میں آلات پہلے ہی کھلا ہے. 373 00:28:22,050 --> 00:28:25,910 میں ایک ٹرمینل ھیںچو جا رہا ہوں. 374 00:28:25,910 --> 00:28:38,250 ، میں ڈراپ باکس کے فولڈر میں جانے کے لئے جا رہا ہوں، نامی section7 ڈائریکٹری 375 00:28:38,250 --> 00:28:42,230 دیکھتے ہیں اور یہ مکمل طور پر خالی ہے. 376 00:28:42,230 --> 00:28:48,860 اب میں نے binary_tree.c کھولنے جا رہا ہوں. 377 00:28:48,860 --> 00:28:51,750 ٹھیک ہے. خالی فائل - یہاں ہمیں جانا. 378 00:28:51,750 --> 00:28:54,330 >> تفصیلات پر واپس جانے دو. 379 00:28:54,330 --> 00:28:59,850 تفصیلات ایک نئی قسم کی تعریف سے بنانے کے لئے کرتے ہیں 380 00:28:59,850 --> 00:29:03,080 ایک بائنری درخت int اقدار پر مشتمل نوڈ کے لئے - 381 00:29:03,080 --> 00:29:07,110 صرف اقدار کہ ہم نے ہمارے سے پہلے diagramming میں متوجہ کی طرح. 382 00:29:07,110 --> 00:29:11,740 ہم یہ boilerplate typedef کہ ہم یہاں کیا ہے استعمال کرنے کے لئے جا رہے ہیں 383 00:29:11,740 --> 00:29:14,420 کہ آپ مسئلہ 5 سیٹ سے تسلیم کرنا چاہئے - 384 00:29:14,420 --> 00:29:19,190 اگر تم فتح ہجے کنندہ کے پروگرام کے ہیش کی میز کی طرح کیا. 385 00:29:19,190 --> 00:29:22,540 تم نے یہ گزشتہ ہفتے کے حصے سے بھی تسلیم کرنا چاہئے 386 00:29:22,540 --> 00:29:23,890 جہاں ہم منسلک فہرستوں کے بارے میں بات کی تھی. 387 00:29:23,890 --> 00:29:27,870 ہم نے ایک struct نوڈ کے اس typedef ہے، 388 00:29:27,870 --> 00:29:34,430 اور ہم اس struct نوڈ کو struct نوڈ کے سے پہلے اس کا نام ہے 389 00:29:34,430 --> 00:29:39,350 تاکہ ہم پھر اس کا حوالہ دیتے ہیں کیونکہ ہم struct نوڈ اشارہ کرنا چاہیں گے کر سکتے ہیں 390 00:29:39,350 --> 00:29:45,740 ہمارے struct کا حصہ کے طور پر، لیکن ہم تو اس گھرا ہے - 391 00:29:45,740 --> 00:29:47,700 typedef میں - یا بلکہ یہ منسلک 392 00:29:47,700 --> 00:29:54,600 تاکہ بعد میں کوڈ میں، ہم بجائے struct نوڈ کا ایک نوڈ کے طور پر اس struct رجوع کر سکتے ہیں. 393 00:29:54,600 --> 00:30:03,120 >> یہ بہت اکیلے سے تعلق رکھنے والے کی فہرست تعریف اسی طرح گزشتہ ہفتے سے کہ ہم نے دیکھا جا رہا ہے. 394 00:30:03,120 --> 00:30:20,070 ایسا کرنے کے لئے، صرف boilerplate لکھنے کی طرف سے شروع کریں. 395 00:30:20,070 --> 00:30:23,840 ہم جانتے ہیں کہ ہم ایک عددی قیمت ہے، 396 00:30:23,840 --> 00:30:32,170 تو ہم int قدر میں ڈال، اگلے عنصر صرف ایک پوائنٹر ہونے کے بجائے اس وقت گا اور - 397 00:30:32,170 --> 00:30:33,970 جیسا کہ ہم اکیلے سے تعلق رکھنے والے کی فہرست کے ساتھ کیا تھا - 398 00:30:33,970 --> 00:30:38,110 ہم بائیں اور دائیں بچے اشارہ کر جا رہے ہیں. 399 00:30:38,110 --> 00:30:42,880 یہ بہت آسان بھی ہے - struct نوڈ بائیں * بچے؛ 400 00:30:42,880 --> 00:30:51,190 اور struct نوڈ * صحیح بچے. ڈاؤن لوڈ، اتارنا. 401 00:30:51,190 --> 00:30:54,740 یہ ایک بہت اچھا آغاز کی طرح لگتا ہے. 402 00:30:54,740 --> 00:30:58,530 تفصیلات پر واپس جانے دو. 403 00:30:58,530 --> 00:31:05,030 >> اب ہم نے ایک درخت کی جڑ کے لئے عالمی سطح پر نوڈ * متغیر کا اعلان کرنے کی ضرورت ہے. 404 00:31:05,030 --> 00:31:10,590 ہم جیسا کہ ہم نے ہمارے منسلک بھی عالمی فہرست میں پہلی پوائنٹر نے اس عالمی بنانے کے لئے جا رہے ہیں. 405 00:31:10,590 --> 00:31:12,690 تاکہ یہ تھا کام کرتا ہے کہ ہم لکھنے میں 406 00:31:12,690 --> 00:31:16,180 ہم اس جڑ کے ارد گرد گزر رہا رکھنے کے لئے کی ضرورت نہیں ہے - 407 00:31:16,180 --> 00:31:19,620 اگرچہ ہم دیکھ کہ اگر آپ ایسا کرتے ہیں ان افعال کو تکراری طور پر لکھنا چاہتا ہوں، 408 00:31:19,620 --> 00:31:22,830 اسے پہلی جگہ میں بہتر ہو سکتا ہے یہ ایک عالمی طور پر بھی آس پاس نہیں گزر سکتا ہے 409 00:31:22,830 --> 00:31:28,090 اور آپ کی مرکزی تقریب میں بجائے مقامی طور پر اس کی ابتدا ہے. 410 00:31:28,090 --> 00:31:31,960 لیکن، ہم نے اسے دنیا بھر میں شروع کریں گے. 411 00:31:31,960 --> 00:31:39,920 ایک بار پھر، ہم خالی جگہوں کے ایک جوڑے دیتے ہیں، اور میں ایک نوڈ * جڑ کا اعلان کرنے جا رہا ہوں گے. 412 00:31:39,920 --> 00:31:46,770 یقین ہے کہ میں نے وہ چھوڑ کر نہیں یہ غیر ابتدا شدہ بنانے کے لئے، میں نے اسے برابر قائم کرنے جا رہا شہوت انگیز null رہا ہوں. 413 00:31:46,770 --> 00:31:52,210 اب مرکزی تقریب میں - جو ہم واقعی بہت تیزی سے ٹھیک یہاں لکھیں گے - 414 00:31:52,210 --> 00:32:00,450 int اہم (int argc، const حروف * argv []) - 415 00:32:00,450 --> 00:32:10,640 اور میں const کے طور پر میری argv صف اعلان شروع کرنے کے لئے صرف اس لئے ہے کہ میں جانتا ہوں کہ جا رہا ہوں 416 00:32:10,640 --> 00:32:14,550 کہ ان دلائل کو دلائل کہ میں شاید پر نظر ثانی کرنے کی نہیں کرنا چاہتے ہیں ہیں. 417 00:32:14,550 --> 00:32:18,390 اگر میں ان پر نظر ثانی کرنا چاہتے ہیں تو میں شاید ان کی کاپیاں بنانے چاہئے. 418 00:32:18,390 --> 00:32:21,740 آپ اس کوڈ میں بہت دیکھ لیں گے. 419 00:32:21,740 --> 00:32:25,440 یہ ٹھیک ہے یا تو طریقہ ہے. یہ ٹھیک ہے، اس کے طور پر چھوڑ دیں - اگر آپ چاہیں تو const ترک. 420 00:32:25,440 --> 00:32:28,630 میں عام طور پر اس میں صرف اس لئے پیش کیا ہے جس میں اپنے آپ کو یاد دلانے 421 00:32:28,630 --> 00:32:33,650  کہ میں شاید ان دلائل پر نظر ثانی نہیں کرنا چاہتا. 422 00:32:33,650 --> 00:32:39,240 >> ہمیشہ کی طرح، میں نے اہم آخر میں اس کی واپسی 0 لائن شامل کرنے کے لئے جا رہا ہوں. 423 00:32:39,240 --> 00:32:45,730 یہاں، میں اپنی جڑ نوڈ ابتدا گا. 424 00:32:45,730 --> 00:32:48,900 جیسا کہ یہ ابھی کھڑا ہے، میں ایک پوائنٹر شہوت انگیز null مقرر ہے، 425 00:32:48,900 --> 00:32:52,970 تو یہ کچھ نہیں طرف اشارہ ہے. 426 00:32:52,970 --> 00:32:57,480 حکم میں اصل نوڈ کی تعمیر شروع کرنے کے لئے، 427 00:32:57,480 --> 00:32:59,250 میں نے سب سے پہلے اس کے لئے میموری مختص کرنے کی ضرورت ہے. 428 00:32:59,250 --> 00:33:05,910 میں malloc کا استعمال کرتے ہوئے ڈھیر پر یاد کرنے کی طرف سے اس کے کرنے جا رہا ہوں. 429 00:33:05,910 --> 00:33:10,660 میں malloc کا نتیجہ کے برابر جڑ قائم کرنے جا رہا ہوں، 430 00:33:10,660 --> 00:33:19,550 اور میں sizeof آپریٹر ایک نوڈ کے سائز کا حساب کرنے کے لئے استعمال کی جا رہی ہوں. 431 00:33:19,550 --> 00:33:24,990 وجہ ہے کہ میں نے sizeof نوڈ کا استعمال کرتے ہیں کے طور پر مخالفت کی، کا کہنا ہے کہ، 432 00:33:24,990 --> 00:33:37,020 malloc (4 + 4 +4) یا 12 malloc - اس طرح کچھ کرنے - 433 00:33:37,020 --> 00:33:40,820 کیونکہ میں اپنے کوڈ ممکن ہو سکے کے طور پر کے طور پر ہم آہنگ کرنا چاہتے ہیں ہے. 434 00:33:40,820 --> 00:33:44,540 میں اس سی فائل. لینے کے قابل بننا چاہتا ہوں، اس آلے پر مرتب، 435 00:33:44,540 --> 00:33:48,820 اور پھر یہ میرا میک 64 بٹ پر مرتب - 436 00:33:48,820 --> 00:33:52,040 یا ایک مکمل طور پر مختلف ساخت پر - 437 00:33:52,040 --> 00:33:54,640 اور میں نے یہ سب ایک ہی کام کرنا چاہتے ہیں. 438 00:33:54,640 --> 00:33:59,510 >> اگر میں متغیرات میں سے سائز کے بارے میں مفروضات کر رہا ہوں - 439 00:33:59,510 --> 00:34:02,070 ایک int یا ایک پوائنٹر کے سائز کا سائز - 440 00:34:02,070 --> 00:34:06,070 تو میں بھی architectures کی قسم کے بارے میں مفروضات بنا رہا ہوں 441 00:34:06,070 --> 00:34:10,440 جس پر میرا کوڈ جب چلانے کے کامیابی سے مرتب کر سکتے ہیں. 442 00:34:10,440 --> 00:34:15,030 ہمیشہ sizeof استعمال کرنے کے لئے کے طور پر دستی طور پر struct شعبوں میزانی کی مخالفت کی. 443 00:34:15,030 --> 00:34:20,500 دوسری وجہ یہ ہے کہ وہاں بھرتی بھی ہو سکتا ہے کہ سنکلک struct میں رکھتا ہے. 444 00:34:20,500 --> 00:34:26,570 بھی صرف انفرادی شعبوں میزانی کچھ ہے جو آپ عام طور پر کرنا چاہتے ہیں نہیں ہے، 445 00:34:26,570 --> 00:34:30,340 ایسا ہے، تو اس لائن کو ختم کر دیں. 446 00:34:30,340 --> 00:34:33,090 اب واقعی میں اس روٹ نوڈ ابتدا، 447 00:34:33,090 --> 00:34:36,489 میں اس کے مختلف شعبوں میں سے ہر ایک کے لئے اقدار میں ہونا پڑے جا رہا ہوں. 448 00:34:36,489 --> 00:34:41,400 مثال کے طور پر، قیمت کے لئے مجھے پتہ ہے میں 7 سے ابتدا کرنا چاہتے ہیں، 449 00:34:41,400 --> 00:34:46,920 اور اب میں بائیں بچے خالی ہو جائے قائم کرنے کے لئے جا رہا ہوں 450 00:34:46,920 --> 00:34:55,820 اور صحیح بچہ بھی، شہوت انگیز null. بہت اچھا ہے! 451 00:34:55,820 --> 00:35:02,670 ہم نے رپورٹ کے اس حصے نے کیا ہے. 452 00:35:02,670 --> 00:35:07,390 >> صفحہ 3 کا سب سے نیچے دیئے گئے تفصیلات کے نیچے مجھ سے پوچھتا مزید تین مراکز بنانے کے لئے - 453 00:35:07,390 --> 00:35:10,600 9 3، 6 پر مشتمل ایک، اور ایک پر مشتمل ایک - 454 00:35:10,600 --> 00:35:14,210 اور پھر ان کے تار تو یہ بالکل ہمارے درخت خاکہ کی طرح لگتا ہے 455 00:35:14,210 --> 00:35:17,120 کہ ہم پہلے سے بات کر رہے تھے. 456 00:35:17,120 --> 00:35:20,450 چلو وہ بہت تیزی سے یہاں کرتے ہیں. 457 00:35:20,450 --> 00:35:26,270 تم نے واقعی بہت تیزی سے دیکھتے ہیں کہ میں نقل کوڈ کا ایک گروپ لکھنا شروع کرنے جا رہا ہوں گے. 458 00:35:26,270 --> 00:35:32,100 میں ایک نوڈ * بنانے کے لئے جا رہا ہوں اور میں اسے تین کو فون کرنے جا رہا ہوں. 459 00:35:32,100 --> 00:35:36,000 میں اسے malloc (sizeof (نوڈ)) کے برابر مقرر کرنے جا رہا ہوں. 460 00:35:36,000 --> 00:35:41,070 میں تین> قیمت = 3 قائم کرنے جا رہا ہوں. 461 00:35:41,070 --> 00:35:54,780 تین -> left_child = نل، تین -> صحیح _child = نل، کے ساتھ ساتھ. 462 00:35:54,780 --> 00:36:01,150 یہ خوبصورت جڑ ابتدا کی طرح لگ رہا ہے، اور یہ کہ بالکل کیا ہے 463 00:36:01,150 --> 00:36:05,760 میں اگر میں 6 اور 9 ابتدا کے ساتھ ساتھ شروع کرنا پڑے جا رہا ہوں. 464 00:36:05,760 --> 00:36:20,720 مجھے یہ واقعی فوری طور پر یہاں کیا کریں گے - اصل میں، میں نے ایک چھوٹی سی کاپی اور پیسٹ کرنے کے لئے جا رہا ہوں، 465 00:36:20,720 --> 00:36:46,140 ٹھیک - اور اس بات کا یقین کر لیں کہ میں. 466 00:36:46,470 --> 00:37:09,900  اب، میں ہے یہ کاپی اور میں آگے بڑھیں اور 6 اس کے برابر مقرر کر سکتے ہیں. 467 00:37:09,900 --> 00:37:14,670 آپ دیکھ کر سکتے ہیں کہ یہ کچھ وقت لیتا ہے اور سپر ہنر نہیں ہے. 468 00:37:14,670 --> 00:37:22,610 صرف تھوڑا سا میں، ہم نے ایک تقریب ہے جو کہ ہمارے لئے یہ کروں گا لکھیں گے. 469 00:37:22,610 --> 00:37:32,890 میں 9 کے ساتھ یہ تبدیل کرنا چاہتے ہیں، کہ 6 کے ساتھ تبدیل کریں. 470 00:37:32,890 --> 00:37:37,360 >> اب ہم ہمارے مراکز کی تمام بنایا ہے اور initialized ہے. 471 00:37:37,360 --> 00:37:41,200 ہم نے ہماری جڑ 7 کے برابر مقرر کرتے ہیں، ہے یا 7 قیمت پر مشتمل ہے، 472 00:37:41,200 --> 00:37:46,510 ہمارے 3 مشتمل نوڈ، ہمارے 6 مشتمل نوڈ، اور ہمارے نوڈ 9 پر مشتمل ہے. 473 00:37:46,510 --> 00:37:50,390 اس وقت ہم سب کرنا ہے تار سب کچھ ہے. 474 00:37:50,390 --> 00:37:53,020 وجہ ہے کہ میں تمام اشارہ initialized شہوت انگیز null ہے تاکہ میں ہے کہ اس بات کا یقین 475 00:37:53,020 --> 00:37:56,260 میں حادثے کی طرف سے میں کوئی غیر ابتدا شدہ اشارہ نہیں ہے. 476 00:37:56,260 --> 00:38:02,290 اور کے بعد بھی، اس وقت، میں صرف واقعی میں ایک دوسرے سے نوڈ مربوط ہے - 477 00:38:02,290 --> 00:38:04,750 ہیں کہ وہ اصل میں منسلک رہے ہیں - میں کے ذریعے جانے کے لئے اور نہیں ہے 478 00:38:04,750 --> 00:38:08,240 اس بات کا یقین کریں کہ ہے کہ تمام nulls مناسب مقامات میں ہیں. 479 00:38:08,240 --> 00:38:15,630 >> جڑ میں شروع ہو رہا ہے، میں جانتا ہوں کہ جڑ بائیں بچے 3. 480 00:38:15,630 --> 00:38:21,250 میں جانتا ہوں کہ جڑ صحیح بچے 9. 481 00:38:21,250 --> 00:38:24,880 اس کے بعد، صرف دوسرے بچے کے بارے میں فکر کرنے کی چھوڑ کر چلے گئے 482 00:38:24,880 --> 00:38:39,080 3 صحیح بچے، جس میں 6 ہے ہے. 483 00:38:39,080 --> 00:38:44,670 اس وقت، یہ سب بہت اچھا لگ رہا ہے. 484 00:38:44,670 --> 00:38:54,210 ہم نے ان لائنوں میں سے کچھ کو خارج کر دیں گے. 485 00:38:54,210 --> 00:38:59,540 اب سب کچھ بہت اچھا لگ رہا ہے. 486 00:38:59,540 --> 00:39:04,240 چلو ہماری تفصیلات پر واپس جاؤ اور دیکھو جو ہم اگلے کرنا ہے. 487 00:39:04,240 --> 00:39:07,610 >> اس وقت ہم نے لکھ کے نام سے تقریب پر مشتمل ہے ' 488 00:39:07,610 --> 00:39:14,150 bool پر مشتمل ہے (int قیمت) کا ایک پروٹوٹائپ کے ساتھ. 489 00:39:14,150 --> 00:39:17,060 اور اس پر مشتمل تقریب سچ واپس کرنے کی جا رہی ہے 490 00:39:17,060 --> 00:39:21,200  اگر ہمارے عالمی جڑ متغیر کی طرف سے درخت کی طرف اشارہ 491 00:39:21,200 --> 00:39:26,950  تقریب اور دوسری صورت میں باطل میں منظور کی قیمت پر مشتمل ہے. 492 00:39:26,950 --> 00:39:29,000 چلو آگے بڑھو اور ایسا. 493 00:39:29,000 --> 00:39:35,380 یہ بالکل تلاش ہے کہ ہم نے پہلے صرف تھوڑا سا iPad پر ہاتھ سے کیا کی طرح بننے جا رہا ہے. 494 00:39:35,380 --> 00:39:40,130 چلو تھوڑا سا میں واپس زوم اور سکرال. 495 00:39:40,130 --> 00:39:43,130 ہم ہمارے مرکزی تقریب کے اوپر اس تقریب کے لئے جا رہے ہیں 496 00:39:43,130 --> 00:39:48,990 تاکہ ہم میں سے کسی قسم کا prototyping کرنے کی ضرورت نہیں ہے. 497 00:39:48,990 --> 00:39:55,960 تو، bool پر مشتمل (int قیمت). 498 00:39:55,960 --> 00:40:00,330 ہم وہاں جا رہے ہیں. ہمارے boilerplate اعلان ہے. 499 00:40:00,330 --> 00:40:02,900 یقین ہے کہ یہ کہ مرتب کریں گے بنانے کے لئے، 500 00:40:02,900 --> 00:40:06,820 مجھے آگے جانا ہے اور صرف یہ برابر قائم جھوٹے واپس جا رہا ہوں. 501 00:40:06,820 --> 00:40:09,980 اب یہ تقریب کچھ نہیں اور ہمیشہ اس رپورٹ گا 502 00:40:09,980 --> 00:40:14,010 قدر کہ ہم کے لئے تلاش کر رہے ہیں درخت میں نہیں ہے. 503 00:40:14,010 --> 00:40:16,280 >> اس وقت شاید یہ ایک اچھا خیال ہے - 504 00:40:16,280 --> 00:40:19,600 چونکہ ہم نے کوڈ کی ایک پوری چڑھانے لکھا ہے اور ہم اسے ابھی تک جانچ کرنے کی کوشش بھی نہیں - 505 00:40:19,600 --> 00:40:22,590 اس بات کا یقین کر لیں کہ ہے کہ یہ سب سے آگاہ کرنے کے لئے. 506 00:40:22,590 --> 00:40:27,460 چیزیں ہیں کہ ہم پر واجب ہے اس بات کا یقین کر لیں کہ یہ اصل میں مرتب گا کے ایک جوڑے کی ہیں. 507 00:40:27,460 --> 00:40:33,530 سب سے پہلے، دیکھو، اگر ہم کسی بھی لائبریریوں میں کسی بھی کام کرتا ہے کہ ہم ابھی تک شامل نہیں ہے کا استعمال کرتے ہوئے. 508 00:40:33,530 --> 00:40:37,940 کام کرتا ہے ہم نے اب تک استعمال کیا ہے malloc ہیں، 509 00:40:37,940 --> 00:40:43,310 اور پھر ہم بھی کیا گیا ہے اس قسم کا استعمال کرتے ہوئے - نامی اس غیر معیاری bool' 'کی قسم - 510 00:40:43,310 --> 00:40:45,750 جو معیاری bool ہیڈر فائل میں شامل کیا گیا ہے. 511 00:40:45,750 --> 00:40:53,250 ہم ضرور bool قسم کے لئے معیاری bool.h کو شامل کرنے کے لئے چاہتے ہیں، 512 00:40:53,250 --> 00:40:59,230 اور ہم بھی # معیاری لائبریریوں کے لئے معیاری lib.h شامل کرنا چاہتے ہیں 513 00:40:59,230 --> 00:41:03,530 malloc، اور مفت، اور اس کے سب شامل ہیں. 514 00:41:03,530 --> 00:41:08,660 تو، باہر زوم، ہم چھوڑ کر جا رہے ہیں. 515 00:41:08,660 --> 00:41:14,190 چلو، اور اس بات کا یقین کر لیں کہ یہ اصل میں تالیف کیا کرنے کی کوشش کریں. 516 00:41:14,190 --> 00:41:18,150 ہم دیکھتے ہیں کہ اس سے فرق پڑتا ہے، تو ہم صحیح راستے پر ہیں. 517 00:41:18,150 --> 00:41:22,990 >> کی اپ binary_tree.c دوبارہ کھول دو. 518 00:41:22,990 --> 00:41:34,530 اس سے آگاہ کریں. چلو، نیچے جاؤ اور اس بات کا یقین کر لیں کہ ہم ہمارے پر مشتمل ہے تقریب میں کچھ فون داخل - 519 00:41:34,530 --> 00:41:40,130 صرف اس بات کا یقین کر لیں کہ کہ وہ سب ٹھیک اور اچھی ہے. 520 00:41:40,130 --> 00:41:43,170 مثال کے طور پر، جب ہم اپنے درخت میں کچھ lookups نے پہلے 521 00:41:43,170 --> 00:41:48,500 ہم نے 6 اقدار، 10، اور 1 تلاش کرنے کی کوشش کی، اور ہم جانتے تھے کہ 6 درخت میں تھا، 522 00:41:48,500 --> 00:41:52,220 10 درخت نہیں تھا، اور 1 درخت میں بھی نہیں تھا. 523 00:41:52,220 --> 00:41:57,230 کا ایک طریقہ کے طور پر ان لوگوں کو نمونہ کالوں کو جاننے کے لئے استعمال کریں یا نہیں 524 00:41:57,230 --> 00:41:59,880 ہمارے پر مشتمل ہے تقریب میں کام کر رہی ہے. 525 00:41:59,880 --> 00:42:05,210 کے لئے ایسا کرنے کے لئے، میں printf تقریب کو استعمال کرنے کے لئے جا رہا ہوں، 526 00:42:05,210 --> 00:42:10,280 اور ہم پر مشتمل ہے کال کا نتیجہ پرنٹ جا رہے ہیں. 527 00:42:10,280 --> 00:42:13,280 میں ایک تار میں ڈال دیا جا رہا ہوں پر مشتمل ہے "(٪ D) کیونکہ = 528 00:42:13,280 --> 00:42:20,470  ہم قدر میں پلگ کرنے جا رہے ہیں کہ ہم نے تلاش کرنے کے لئے جا رہے ہیں، 529 00:42:20,470 --> 00:42:27,130 =٪ s کو کریں \ n "اور اس کا استعمال ہماری شکل سٹرنگ کے طور پر. 530 00:42:27,130 --> 00:42:30,720 لفظی سکرین پر باہر پرنٹ - ہم تو صرف دیکھ کر جا رہے ہیں - 531 00:42:30,720 --> 00:42:32,060 ایک تقریب کال کی طرح کیا لگتا ہے. 532 00:42:32,060 --> 00:42:33,580 یہ اصل میں تقریب کال نہیں ہے. 533 00:42:33,580 --> 00:42:36,760  یہ صرف ایک سٹرنگ ایک تقریب کال کی طرح نظر کرنے کے لئے ڈیزائن کیا ہے. 534 00:42:36,760 --> 00:42:41,140 >> اب، ہم قیمتوں میں ہونا جا رہے ہیں. 535 00:42:41,140 --> 00:42:43,580 ہم 6 مشتمل ہے کرنے کی کوشش کی جا رہے ہیں، 536 00:42:43,580 --> 00:42:48,340 اور پھر جو ہم یہاں کیا کرنے جا رہے ہیں کہ تہرا آپریٹر کا استعمال ہے. 537 00:42:48,340 --> 00:42:56,340 6 پر مشتمل ہے - - چلو ایسا ہے، تو اب میں 6 موجود ہے اور اگر 6 مشتمل ہے سچ ہے، 538 00:42:56,340 --> 00:43:01,850 سٹرنگ ہے کہ ہم کے٪ فارمیٹ کردار بھیجنے کے لئے جا رہے ہیں 539 00:43:01,850 --> 00:43:04,850 سٹرنگ "حقیقی" ہو جائے گا. 540 00:43:04,850 --> 00:43:07,690 چلو تھوڑا سا پر سکرال. 541 00:43:07,690 --> 00:43:16,210 دوسری صورت میں، ہم سٹرنگ "جھوٹے" اگر 6 جھوٹے واپسی پر مشتمل بھیجنا چاہتے ہیں. 542 00:43:16,210 --> 00:43:19,730 یہ تھوڑا مورھ نظر ہے، لیکن مجھے لگتا ہے میں کے طور پر اچھی طرح سے وضاحت کرنا ہو سکتا ہے 543 00:43:19,730 --> 00:43:23,780 تہرا آپریٹر کیا کیونکہ ہم تھوڑی دیر کے لئے یہ نہیں دیکھا ہے کی طرح لگتا ہے. 544 00:43:23,780 --> 00:43:27,670 یہ ایک اچھا، ہاتھ اگر ہمارے پر مشتمل ہے تقریب میں کام کر رہی ہے پر اعداد و شمار کا ایک طریقہ ہو گا. 545 00:43:27,670 --> 00:43:30,040 میں بائیں میں واپس سکرال جا رہا ہوں، 546 00:43:30,040 --> 00:43:39,900 اور میں اور اس لائن کو پیسٹ کرنے کی چند بار کی کاپی کرنے جا رہا ہوں. 547 00:43:39,900 --> 00:43:44,910 یہ ان اقدار کی کچھ کے ارد گرد کو تبدیل کر دیا گیا، 548 00:43:44,910 --> 00:43:59,380 تو یہ 1 جا ہے، اور یہ 10 کی جا رہی ہے. 549 00:43:59,380 --> 00:44:02,480 >> اس وقت ہم نے ایک اچھا پر مشتمل ہے تقریب ہے. 550 00:44:02,480 --> 00:44:06,080 ہم کچھ ٹیسٹ ہے، اور ہم دیکھتے ہیں اگر یہ سب کام کریں گے ہے. 551 00:44:06,080 --> 00:44:08,120 اس وقت ہم نے کچھ اور کوڈ لکھا ہے. 552 00:44:08,120 --> 00:44:13,160 باہر چھوڑ اور اس بات کا یقین کر لیں کہ ہے کہ سب کچھ اب بھی آگاہ وقت. 553 00:44:13,160 --> 00:44:20,360 باہر چھوڑ اور اب بائنری درخت پھر سے بنانے کی کوشش کریں. 554 00:44:20,360 --> 00:44:22,260 ٹھیک ہے، ایسا لگتا ہے جیسے ہم نے ایک غلطی ہے، 555 00:44:22,260 --> 00:44:26,930 اور ہم ہے اس کو واضح طور پر لائبریری تقریب printf اعلان. 556 00:44:26,930 --> 00:44:39,350 ایسا لگتا ہے جیسے ہم میں جانے کے لئے اور # standardio.h شامل کرنے کی ضرورت ہے. 557 00:44:39,350 --> 00:44:45,350 اور اس کے ساتھ سب کچھ مرتب کرنا چاہئے. ہم سب اچھے ہیں. 558 00:44:45,350 --> 00:44:50,420 اب بائنری درخت چلانے کی کوشش کرتے ہیں اور دیکھتے ہیں کیا ہوتا ہے. 559 00:44:50,420 --> 00:44:53,520 ہم یہاں ہیں، binary_tree /، 560 00:44:53,520 --> 00:44:55,190 اور ہم دیکھتے ہیں کہ، جیسا کہ ہم امید کی جاتی ہے - 561 00:44:55,190 --> 00:44:56,910 کیونکہ ہم لاگو نہیں کیا ہے ابھی تک پر مشتمل ہوتا ہے، 562 00:44:56,910 --> 00:44:59,800 بلکہ، ہم صرف جھوٹے بدلے میں ڈال دیا ہے - 563 00:44:59,800 --> 00:45:03,300 ہم دیکھتے ہیں کہ یہ صرف ان میں سے سب کے لئے غلط ہے واپس لوٹنے، 564 00:45:03,300 --> 00:45:06,180 تاکہ سب سے زیادہ حصہ کے لئے کافی اچھا کام کر رہا ہے. 565 00:45:06,180 --> 00:45:11,860 >> چلو، میں واپس جانے اور اصل عمل درآمد اس وقت پر مشتمل ہے. 566 00:45:11,860 --> 00:45:17,490 میں نیچے سکرال کرنے کے لئے، میں زوم جا رہا ہوں، اور - 567 00:45:17,490 --> 00:45:22,330 یاد رکھو، الگورتھم ہے کہ ہم استعمال کیا تھا کہ ہم جڑ نوڈ میں شروع 568 00:45:22,330 --> 00:45:28,010 اور پھر ہر نوڈ ہم اس کا سامنا، ہم ایک موازنہ کرتے ہیں، 569 00:45:28,010 --> 00:45:32,380 اور ہم اس کے مقابلے پر کی بنیاد پر یا تو بائیں بچے یا صحیح بچے کو منتقل. 570 00:45:32,380 --> 00:45:39,670 یہ بائنری تلاش کا کوڈ ہے جو ہم پہلے مدت میں لکھا اسی طرح دیکھنے کے لئے کی جا رہی ہے. 571 00:45:39,670 --> 00:45:47,810 جب ہم نے شروع ہو جائیں، ہم جانتے ہیں کہ ہم موجودہ نوڈ پر منعقد کرنا چاہتے ہیں 572 00:45:47,810 --> 00:45:54,050 کہ ہم دیکھ رہے ہیں، اور موجودہ نوڈ جڑ نوڈ پر initialized جا رہا ہے. 573 00:45:54,050 --> 00:45:56,260 اور اب، ہم نے درخت سے گزر رہا رکھنے کے لئے جا رہے ہیں، 574 00:45:56,260 --> 00:45:58,140 اور یہ کہ ہمارے روکنے کی حالت یاد رکھو - 575 00:45:58,140 --> 00:46:01,870  ہم اصل میں جب ہاتھ کی طرف سے مثال کے طور پر کے ذریعے کام - 576 00:46:01,870 --> 00:46:03,960 جب ہم نے ایک لوڈ، اتارنا null نوڈ کا سامنا کرنا پڑا تھا، 577 00:46:03,960 --> 00:46:05,480 نہیں جب ہم شہوت انگیز null بچے کو دیکھا 578 00:46:05,480 --> 00:46:09,620 بلکہ جب ہم اصل درخت میں ایک نوڈ پر منتقل ہو گیا 579 00:46:09,620 --> 00:46:12,640 ملا اور یہ کہ ہم شہوت انگیز null نوڈ میں ہیں. 580 00:46:12,640 --> 00:46:20,720 ہم iterate جا تک رائج شہوت انگیز null برابر نہیں ہے. 581 00:46:20,720 --> 00:46:22,920 اور جو ہم کرنے جا رہے ہیں؟ 582 00:46:22,920 --> 00:46:31,610 ہم امتحان جا رہے ہیں اگر - (رائج قیمت> == قیمت) 583 00:46:31,610 --> 00:46:35,160 تو ہم جانتے ہیں کہ ہم اصل میں نوڈ کہ ہم کے لئے تلاش کر رہے ہیں تلاش کر لیا ہے. 584 00:46:35,160 --> 00:46:40,450 تو یہاں ہم سچ واپس آ سکتے ہیں. 585 00:46:40,450 --> 00:46:49,830 دوسری صورت میں، ہم دیکھتے ہیں یا نہیں قیمت کی قیمت سے کم ہے کرنا چاہتے ہیں. 586 00:46:49,830 --> 00:46:53,850 اگر موجودہ نوڈ کی قدر قیمت سے کم ہے ہم کے لئے تلاش کر رہے ہیں، 587 00:46:53,850 --> 00:46:57,280 ہم حق پر منتقل کرنے کے لئے جا رہے ہیں. 588 00:46:57,280 --> 00:47:10,600 لہذا، رائج = رائج -> right_child، اور دوسری صورت میں، ہم بائیں طرف منتقل کرنے کے لئے جا رہے ہیں. 589 00:47:10,600 --> 00:47:17,480 رائج = رائج -> left_child؛. بہت آسان ہے. 590 00:47:17,480 --> 00:47:22,830 >> تم شاید لوپ ہے جو بہت سے اس کی طرح لگ رہا ہے کو تسلیم 591 00:47:22,830 --> 00:47:27,580 بائنری پہلے مدت میں تلاش کرتے ہیں، تو ہم کو چھوڑ کر کم، وسط، اور اعلی سے نمٹنے کر رہے تھے. 592 00:47:27,580 --> 00:47:30,000 یہاں، ہم صرف ایک موجودہ قیمت کو دیکھنے کے لئے ہے، 593 00:47:30,000 --> 00:47:31,930 تو یہ اچھا اور آسان ہے. 594 00:47:31,930 --> 00:47:34,960 چلو اس بات کا یقین کر لیں کہ اس کوڈ کام کر رہا ہے. 595 00:47:34,960 --> 00:47:42,780 سب سے پہلے، اس بات کا یقین کر لیں کہ اس سے آگاہ ہے. یہ کرتا ہے ایسا لگتا ہے. 596 00:47:42,780 --> 00:47:47,920 کوشش کرتے ہیں یہ چل رہا ہے. 597 00:47:47,920 --> 00:47:50,160 اور یقینا، یہ سب کچھ ہے کہ ہم امید پرنٹ. 598 00:47:50,160 --> 00:47:54,320 یہ درخت میں 6 پائے، 10 تلاش نہیں ہے کیونکہ 10 درخت میں نہیں ہے، 599 00:47:54,320 --> 00:47:57,740 اور 1 تلاش نہیں ہے کیونکہ یا تو 1 بھی درخت میں نہیں ہے. 600 00:47:57,740 --> 00:48:01,420 ڈاؤن لوڈ، اتارنا چیزیں. 601 00:48:01,420 --> 00:48:04,470 >> ٹھیک ہے. چلو ہماری تفصیلات پر واپس جاؤ اور دیکھو اس کے بعد کیا ہے. 602 00:48:04,470 --> 00:48:07,990 اب، یہ ہمارے درخت کچھ نوڈس شامل کرنا چاہتا ہے. 603 00:48:07,990 --> 00:48:11,690 5، 2، اور 8 کو شامل کرنے کے لئے، اور اس بات کا یقین کر لیں کہ کہ ہمارے کوڈ شامل کرنا چاہتا ہے 604 00:48:11,690 --> 00:48:13,570 اب بھی کام کرتا ہے کے طور پر امید کی جاتی ہے. 605 00:48:13,570 --> 00:48:14,900 چلو ایسا کریں. 606 00:48:14,900 --> 00:48:19,430 اس وقت، بلکہ کہ پریشان کاپی اور پیسٹ کر پھر سے 607 00:48:19,430 --> 00:48:23,770 ہم اصل میں ایک نوڈ بنانے کی تقریب لکھنے. 608 00:48:23,770 --> 00:48:27,740 اگر ہم بنیادی سکرال تمام طرح ہم دیکھتے ہیں کہ ہم یہ کر رہی 609 00:48:27,740 --> 00:48:31,210 بار بار ہر وقت آ گیا ہے کہ ہم ایک نوڈ بنانے کے لئے چاہتے ہیں بہت اسی طرح کے کوڈ. 610 00:48:31,210 --> 00:48:39,540 >> کی ایک تقریب ہے وہ ہمارے لئے ایک نوڈ اصل اور اس کو واپس تعمیر کریں گے لکھنے دو 611 00:48:39,540 --> 00:48:41,960 میں اسے build_node جا رہا ہوں. 612 00:48:41,960 --> 00:48:45,130 میں ایک خاص قدر کے ساتھ ایک نوڈ بنانے جا رہا ہوں. 613 00:48:45,130 --> 00:48:51,040 یہاں میں زوم. 614 00:48:51,040 --> 00:48:56,600 پہلی چیز جو میں کرنے جا رہا ہوں اصل میں ڈھیر پر نوڈ کے لئے جگہ بنانے کے ہے. 615 00:48:56,600 --> 00:49:05,400 تو، نوڈ * ن = malloc ((نوڈ) sizeof)؛ N -> قیمت = قیمت. 616 00:49:05,400 --> 00:49:14,960 اور یہاں تو، میں تو بس شعبوں کے تمام مناسب اقدار پر ابتدا کی جا رہی ہوں. 617 00:49:14,960 --> 00:49:22,500 اور ہم ہی آخر میں اپنے نوڈ کو واپس کریں گے. 618 00:49:22,500 --> 00:49:28,690 ٹھیک ہے. ایک بات نوٹ کہ اس تقریب یہیں ہے 619 00:49:28,690 --> 00:49:34,320 میموری ڈھیر مختص کر دیا گیا ہے ایک پوائنٹر واپس جا رہے ہیں. 620 00:49:34,320 --> 00:49:38,880 کیا اس کے بارے میں اچھی بات ہے یہ ہے کہ یہ نوڈ اب - 621 00:49:38,880 --> 00:49:42,420 ہم اس ڈھیر پر کیونکہ اگر ہم اس کے اسٹیک اعلان کیا اعلان ہے 622 00:49:42,420 --> 00:49:45,050 ہم اسے اس طرح اس جشن میں کرنے کے قابل نہیں ہو گا. 623 00:49:45,050 --> 00:49:47,690 وہ میموری گنجائش سے باہر جائیں گے 624 00:49:47,690 --> 00:49:51,590 اور باطل ہو گا اگر ہم اس کے بعد تک رسائی حاصل کرنے کی کوشش کی جائے گی. 625 00:49:51,590 --> 00:49:53,500 چونکہ ہم نے ڈھیر مختص میموری کا اعلان کر رہے ہیں، 626 00:49:53,500 --> 00:49:55,830 ہم اسے بعد میں آزاد کا خیال رکھنا پڑے جا رہے ہیں 627 00:49:55,830 --> 00:49:58,530 ہمارے پروگرام کے لئے کسی بھی میموری لیک نہیں. 628 00:49:58,530 --> 00:50:01,270 ہم باقی سب کے لئے کوڈ میں اس پر punting 629 00:50:01,270 --> 00:50:02,880 وقت سادگی کے لئے 630 00:50:02,880 --> 00:50:05,610 لیکن اگر تم نے کبھی ایک تقریب ہے کہ اس طرح لگتا ہے لکھنے 631 00:50:05,610 --> 00:50:10,370 جہاں آپ کو مل گیا ہے - کچھ یہ malloc یا ان کے اندر realloc کہتے ہیں - 632 00:50:10,370 --> 00:50:14,330 آپ کو اس بات کا یقین کر لیں کہ آپ کسی قسم کا تبصرہ ڈال جو یہ کہتا ہے بنانے کے لئے چاہتے ہیں، 633 00:50:14,330 --> 00:50:29,970 ہے، آپ جانتے ہیں، ایوان میں قدر کے ساتھ initialized ڈھیر مختص نوڈ واپس. 634 00:50:29,970 --> 00:50:33,600 اور پھر آپ کو اس بات کا یقین کر لیں کہ آپ نوٹ یہ کہتا ہے کہ کسی قسم میں ڈال دیا بنانا چاہتے ہیں 635 00:50:33,600 --> 00:50:41,720 فون کرنے والے سے واپس میموری آزاد کرنا ہوگا. 636 00:50:41,720 --> 00:50:45,450 اس طرح، اگر کبھی کسی جاتا ہے اور اس تقریب کا استعمال کرتا ہے، 637 00:50:45,450 --> 00:50:48,150 وہ جانتے ہیں کہ جو کچھ بھی وہ اس تقریب سے واپس حاصل 638 00:50:48,150 --> 00:50:50,870 کچھ نقطہ پر آزاد کرنے کی ضرورت ہوگی. 639 00:50:50,870 --> 00:50:53,940 >> یہ سمجھتے ہوئے کہ سب ٹھیک ہے اور اچھا یہاں ہے، 640 00:50:53,940 --> 00:51:02,300 ہم اپنے کوڈ میں نیچے جاؤ اور ان لائنوں کی سب یہیں کی جگہ کر سکتے ہیں 641 00:51:02,300 --> 00:51:05,410 ہماری تعمیر نوڈ کی تقریب میں کالوں کے ساتھ. 642 00:51:05,410 --> 00:51:08,170 چلو کہ واقعی تیزی سے کرنا چاہے. 643 00:51:08,170 --> 00:51:15,840 ایک حصہ ہے کہ ہم جا کے عوض میں نہیں کر رہے ہیں اس حصے کو نیچے یہاں ہے 644 00:51:15,840 --> 00:51:18,520 نیچے جہاں ہم واقعی نوڈس تار ایک دوسرے کی طرف اشارہ 645 00:51:18,520 --> 00:51:21,030 اس لیے کہ ہم اپنے تقریب میں نہیں کر سکتا. 646 00:51:21,030 --> 00:51:37,400 لیکن، جڑ = build_node (7)؛ نوڈ تین * = build_node (3)؛ 647 00:51:37,400 --> 00:51:47,980 نوڈ چھ * = build_node (6)؛ نوڈ نو * = build_node (9)؛ 648 00:51:47,980 --> 00:51:52,590 اور اب، ہم بھی نوڈس شامل کرنے کے لئے کرنا چاہتا تھا - 649 00:51:52,590 --> 00:52:03,530 نوڈ پانچ * = build_node (5)؛ نوڈ آٹھ * = build_node (8)؛ 650 00:52:03,530 --> 00:52:09,760 اور دوسری نوڈ تھا؟ چلو یہاں دیکھ. ہم نے بھی 2 میں شامل کرنے کے لئے کرنا چاہتا تھا - 651 00:52:09,760 --> 00:52:20,280 نوڈ دو * = build_node (2). 652 00:52:20,280 --> 00:52:26,850 ٹھیک ہے. اس وقت، ہم جانتے ہیں کہ ہم 7، 3، 9، اور 6 ہے 653 00:52:26,850 --> 00:52:30,320 تمام مناسب طریقے سے منسلک، لیکن جو 5، 8، اور 2؟ 654 00:52:30,320 --> 00:52:33,550 ، مناسب ترتیب میں سب کچھ رکھنے کے 655 00:52:33,550 --> 00:52:39,230 ہم جانتے ہیں کہ تین صحیح بچے 6. 656 00:52:39,230 --> 00:52:40,890 تو، اگر ہم 5 شامل کرنے کے لئے جا رہے ہیں، 657 00:52:40,890 --> 00:52:46,670 5 بھی درخت کی دائیں جانب ہے جن میں سے 3 جڑ ہے میں ہے، 658 00:52:46,670 --> 00:52:50,440 تو 5 6 کے بائیں بچے کے طور پر تعلق رکھتا ہے. 659 00:52:50,440 --> 00:52:58,650 ہم کہہ رہے ہو، چھ کی طرف سے ایسا کر سکتے ہیں -> left_child پانچ =؛ 660 00:52:58,650 --> 00:53:10,790 اور پھر 8 9 کے بائیں بچے کے طور پر ہے، تو نو - آٹھ> left_child =؛ 661 00:53:10,790 --> 00:53:22,190 اور پھر 2 3 بائیں بچے، تو ہم ایسا یہاں کر سکتے ہیں - تجھ - دو> left_child =. 662 00:53:22,190 --> 00:53:27,730 اگر آپ اس کے ساتھ بہت نہیں کیا کی پیروی، میں تجویز ہے کہ آپ اسے باہر اپنے آپ کو اپنی طرف متوجہ کریں. 663 00:53:27,730 --> 00:53:35,660 >> ٹھیک ہے. چلو، اس کو بچانے کے. چلو باہر چلتے ہیں اور اس بات کا یقین کر لیں کہ اس سے آگاہ کریں، 664 00:53:35,660 --> 00:53:40,760 اور پھر ہم ہمارے پر مشتمل ہے کالوں میں شامل کر سکتے ہیں. 665 00:53:40,760 --> 00:53:44,120 کی طرح سب کچھ اب بھی آگاہ لگتا ہے. 666 00:53:44,120 --> 00:53:51,790 چلو میں جاؤ اور کچھ فون پر مشتمل ہے میں شامل ہیں. 667 00:53:51,790 --> 00:53:59,640 ایک بار پھر، میں کاپی اور پیسٹ تھوڑا سا میں کیا کرنے جا رہا ہوں. 668 00:53:59,640 --> 00:54:15,860 چلو اب 5، 8 اور 2 کے لئے تلاش کریں. ٹھیک ہے. 669 00:54:15,860 --> 00:54:28,330 چلو اس بات کا یقین کر لیں کہ ہے کہ یہ سب اچھا اب بھی لگتا ہے. بہت اچھا ہے! محفوظ کریں اور چھوڑ. 670 00:54:28,330 --> 00:54:33,220 اب بنانے کی تیاری، اور اب ہم چلانے کے. 671 00:54:33,220 --> 00:54:37,540 نتائج سے، ایسا لگتا ہے کہ سب کچھ اچھا اور اچھی طرح کام کر رہا ہے. 672 00:54:37,540 --> 00:54:41,780 بہت اچھا ہے! تو اب ہم نے ہمارے پر مشتمل ہے کو لکھا تقریب ہے. 673 00:54:41,780 --> 00:54:46,160 چلو منتقل اور کس طرح درخت میں نوڈس داخل کرنے پر کام شروع 674 00:54:46,160 --> 00:54:50,000 کے بعد، جیسا کہ ہم یہ کام کر رہے ہو، چیزیں بہت خوبصورت نہیں ہیں. 675 00:54:50,000 --> 00:54:52,280 >> اگر ہم تفصیلات پر واپس جانے، 676 00:54:52,280 --> 00:55:00,540 یہ ہم سے پوچھتے ہیں کے نام سے داخل تقریب لکھنے - پھر bool واپس لوٹنے 677 00:55:00,540 --> 00:55:04,400 یا نہیں ہم درخت میں نوڈ اصل میں داخل کر سکتا ہے - 678 00:55:04,400 --> 00:55:07,710 اور پھر درخت میں داخل کرنے کی قیمت کے طور پر مخصوص ہے 679 00:55:07,710 --> 00:55:11,060 ہمارے داخل تقریب پر صرف دلیل ہے. 680 00:55:11,060 --> 00:55:18,180 ہم سچے واپس اگر ہم درخت میں نوڈ پر مشتمل قیمت واقعی داخل کر سکتا ہے گا، 681 00:55:18,180 --> 00:55:20,930 جس کا مطلب یہ ہے کہ ہم، ایک، کافی میموری تھا، 682 00:55:20,930 --> 00:55:24,840 اور دو تو، کہ نوڈ کے بعد درخت میں نے پہلے ہی نہیں تھا موجود - 683 00:55:24,840 --> 00:55:32,170 یاد رکھو، ہم جا درخت میں نقل اقدار نہیں ہیں، صرف چیزوں کو آسان بنانے کے لئے. 684 00:55:32,170 --> 00:55:35,590 ٹھیک ہے. کوڈ پر واپس جائیں. 685 00:55:35,590 --> 00:55:44,240 اسے کھولو. تھوڑا سا میں زوم، پھر ذیل میں سکرال. 686 00:55:44,240 --> 00:55:47,220 چلو ٹھیک ہے پر مشتمل ہوتا ہے مندرجہ بالا داخل تقریب ڈال. 687 00:55:47,220 --> 00:55:56,360 ایک بار پھر، یہ bool داخل کہا جاتا (int قیمت) ہو رہا ہے. 688 00:55:56,360 --> 00:56:01,840 ، اس سے تھوڑا زیادہ جگہ دے دو، اور ڈیفالٹ کے طور پر تو، 689 00:56:01,840 --> 00:56:08,870 بہت آخر میں جھوٹے بدلے میں ڈال دو. 690 00:56:08,870 --> 00:56:22,620 اب نیچے سب سے نیچے دیئے گئے، آگے اور اس کے بجائے دستی طور پر مراکز کی تعمیر کے 691 00:56:22,620 --> 00:56:27,900 اہم، خود اور ان کی وائرنگ کا ایک دوسرے سے جیسا کہ ہم کر رہے ہیں کی طرف اشارہ 692 00:56:27,900 --> 00:56:30,600 ہم ایسا کرنے کے لئے ہماری داخل تقریب پر انحصار کریں گے. 693 00:56:30,600 --> 00:56:35,510 ہم ہماری داخل تقریب پر انحصار نہیں شروع سے پورے درخت کو ابھی تک تعمیر کیا جائے گا، 694 00:56:35,510 --> 00:56:39,970 بلکہ ہم ان لائنوں کی چھٹکارا گے - we'll ان لائنوں باہر تبصرہ - 695 00:56:39,970 --> 00:56:43,430 5 نوڈس، 8، اور 2 کی تعمیر. 696 00:56:43,430 --> 00:56:55,740 اور اس کے بجائے، ہم ہمارے داخل تقریب کالز داخل کریں گے 697 00:56:55,740 --> 00:57:01,280 اس بات کا یقین کر لیں کہ کہ اصل میں کام کرتا ہے بنانے کے لئے. 698 00:57:01,280 --> 00:57:05,840 یہاں ہم چلے. 699 00:57:05,840 --> 00:57:09,300 >> اب ہم باہر تبصرہ ان لائنوں کو ہے. 700 00:57:09,300 --> 00:57:13,700 ہم صرف اس وقت ہمارے درخت میں 7، 3، 9، اور 6 ہے. 701 00:57:13,700 --> 00:57:18,870 اس بات کا یقین کر لیں کہ یہ سب کام کر رہی ہے بنانے کے کرنے کے لئے، 702 00:57:18,870 --> 00:57:25,050 ہم باہر زوم کر سکتے ہیں، ہماری بائنری درخت، 703 00:57:25,050 --> 00:57:30,750 اسے چلاتے ہیں، اور ہم دیکھتے ہیں کہ پر مشتمل ہے اب ہمیں بتا کہ ہم مکمل طور پر درست ہو کر سکتے ہیں - 704 00:57:30,750 --> 00:57:33,110 5، 8، اور 2 درخت میں نہیں ہیں. 705 00:57:33,110 --> 00:57:37,960 کوڈ میں واپس جاؤ 706 00:57:37,960 --> 00:57:41,070 اور ہم کس طرح داخل کرنے جا رہے ہیں؟ 707 00:57:41,070 --> 00:57:46,290 یاد ہے ہم نے کیا کیا جب ہم واقعی 5 داخل کیا گیا تھا، 8 اور 2 پہلے ہے. 708 00:57:46,290 --> 00:57:50,100 ہم اس Plinko کھیل کھےلا جہاں ہم جڑ سے شروع، 709 00:57:50,100 --> 00:57:52,780 نیچے ایک کے بعد ایک چلا گیا درخت ایک 710 00:57:52,780 --> 00:57:54,980 جب تک ہم مناسب فرق پایا جاتا ہے، 711 00:57:54,980 --> 00:57:57,570 اور پھر ہم مناسب موقع پر نوڈ میں وائرڈ. 712 00:57:57,570 --> 00:57:59,480 ہم ایک ہی بات کرنے جا رہے ہیں. 713 00:57:59,480 --> 00:58:04,070 یہ میں کہ ہم کرتے تھے کوڈ لکھنے کی طرح بنیادی طور پر ہے تقریب پر مشتمل ہے 714 00:58:04,070 --> 00:58:05,910 جگہ تلاش کرنے کے لئے نوڈ کہاں ہونا چاہئے، 715 00:58:05,910 --> 00:58:10,560 اور اس وقت ہم صرف نوڈ وہیں ڈالنے جا رہے ہیں. 716 00:58:10,560 --> 00:58:17,000 چلو کہ کر شروع ہو جاتے ہیں. 717 00:58:17,000 --> 00:58:24,200 >> تو ہم نے ایک نوڈ * رائج جڑ = ہے، ہم صرف اس کی پیروی کوڈ پر مشتمل ہے کے لئے جا رہے ہیں 718 00:58:24,200 --> 00:58:26,850 جب تک ہم محسوس کرتے ہیں کہ یہ ہمارے لئے بہت کام نہیں کرتا. 719 00:58:26,850 --> 00:58:32,390 ہم درخت کے ذریعے جانے کے لئے جا رہی جبکہ موجودہ عنصر خالی نہیں ہے، 720 00:58:32,390 --> 00:58:45,280 اور اگر ہم دیکھتے ہیں کہ رائج قیمت قدر کہ ہم داخل کرنے کی کوشش کر رہے ہیں کے برابر ہے - 721 00:58:45,280 --> 00:58:49,600 ٹھیک ہے، یہ مقدمات میں سے ایک ہے جس میں ہم اصل نوڈ نہیں ڈال سکتا ہے ہے 722 00:58:49,600 --> 00:58:52,730 درخت میں کیونکہ اس کا مطلب ہے کہ ہم ڈوپلیکیٹ قدر ہے. 723 00:58:52,730 --> 00:58:59,010 یہاں ہم واقعی جھوٹے واپس جا رہے ہیں. 724 00:58:59,010 --> 00:59:08,440 اب رائج قیمت اگر کسی قیمت سے کم ہے، 725 00:59:08,440 --> 00:59:10,930 اب ہم جانتے ہیں کہ ہم حق میں منتقل 726 00:59:10,930 --> 00:59:17,190  کیونکہ قدر رائج درخت کی دائیں نصف میں تعلق رکھتا ہے. 727 00:59:17,190 --> 00:59:30,110 دوسری صورت میں، ہم بائیں طرف منتقل کرنے کے لئے جا رہے ہیں. 728 00:59:30,110 --> 00:59:37,980 یہ بنیادی طور پر ہمارے پر مشتمل ہے ٹھیک وہاں کام ہے. 729 00:59:37,980 --> 00:59:41,820 >> اس وقت، ایک بار ہم اس دیر لوپ مکمل کرلی ہے، 730 00:59:41,820 --> 00:59:47,350 ہمارے رائج پوائنٹر شہوت انگیز null کی طرف اشارہ کرتے ہوئے جا رہا ہے 731 00:59:47,350 --> 00:59:51,540 اگر تقریب پہلے ہی واپس نہیں آیا ہے. 732 00:59:51,540 --> 00:59:58,710 ہم اس وجہ سے موقع پر رائج ہونے رہے ہیں جہاں ہم نئے نوڈ کو شامل کرنے کے لئے کرنا چاہتے ہیں. 733 00:59:58,710 --> 01:00:05,210 کیا کچھ کرنا باقی ہے. میں نئے نوڈ کی تعمیر ہے، 734 01:00:05,210 --> 01:00:08,480 جس پر ہم بہت آسانی سے کر سکتے ہیں. 735 01:00:08,480 --> 01:00:14,930 ہم اپنے سپر ہاتھ کی تعمیر نوڈ تقریب کا استعمال کر سکتے ہیں، 736 01:00:14,930 --> 01:00:17,210 کچھ اور کہ ہم نے پہلے نہیں کیا - 737 01:00:17,210 --> 01:00:21,400 ہم صرف طرح حاصل کی جاچکی کے لئے لے گئے لیکن اب ہم صرف اس بات کو یقینی بنانے کے لئے کیا کرنا ہوگا - 738 01:00:21,400 --> 01:00:27,130 ہم اس بات کا یقین کر لیں کہ نئے نوڈ کی طرف سے واپس قیمت دراصل آزمائش کریں گے 739 01:00:27,130 --> 01:00:33,410 نہیں، شہوت انگیز null، کیونکہ، ہم کہ میموری تک رسائی حاصل اگر وہ شہوت انگیز null ہے شروع کرنے کے لئے نہیں کرنا چاہتا. 740 01:00:33,410 --> 01:00:39,910 ہم اس بات کا یقین ہے کہ نئے نوڈ شہوت انگیز null برابر نہیں ہے ٹیسٹ کر سکتے ہیں. 741 01:00:39,910 --> 01:00:42,910 یا اس کے بجائے، ہم اگر یہ واقعی اتارنا null ہے دیکھ سکتے ہیں، 742 01:00:42,910 --> 01:00:52,120 اور اگر شہوت انگیز null ہے، تو ہم جھوٹے صرف جلد واپس آ سکتے ہیں. 743 01:00:52,120 --> 01:00:59,090 >> اس وقت ہم نے اس کے درخت میں مناسب جگہ میں نئے نوڈ تار ہے. 744 01:00:59,090 --> 01:01:03,510 اگر ہم اہم میں واپس دیکھو اور جہاں ہم واقعی سے پہلے قیمتوں میں وائرنگ تھے، 745 01:01:03,510 --> 01:01:08,470 ہم دیکھتے ہیں کہ جس طرح سے ہم یہ کر رہے تھے جب ہم درخت میں 3 کرنا چاہتے 746 01:01:08,470 --> 01:01:11,750 گیا اور ہم جڑ کے بائیں بچے کو حاصل کیا ہے. 747 01:01:11,750 --> 01:01:14,920 جب ہم درخت میں 9 ڈالا، ہم جڑ کے دائیں بچے تک رسائی حاصل کی تھی. 748 01:01:14,920 --> 01:01:21,030 ہم والدین کو ایک پوائنٹر کے لئے درخت میں ایک نئی قیمت کے لئے تھا. 749 01:01:21,030 --> 01:01:24,430 واپس طومار کر ڈالنے کے، کہ بہت کام کرنے کی نہیں ہے یہاں 750 01:01:24,430 --> 01:01:27,550 کیونکہ ہم نے والدین پوائنٹر نہیں ہے. 751 01:01:27,550 --> 01:01:31,650 ہم کیا کرنے کے قابل کرنا چاہتے ہیں اس وقت ہے، 752 01:01:31,650 --> 01:01:37,080 والدین قیمت چیک کریں اور دیکھیں - اچھی طرح بھگوان،، 753 01:01:37,080 --> 01:01:41,990 اگر والدین قیمت موجودہ قیمت سے کم ہے، 754 01:01:41,990 --> 01:01:54,440 تو والدین کے حق کے بچے کو نئی نوڈ ہونا چاہئے؛ 755 01:01:54,440 --> 01:02:07,280 دوسری صورت میں، والدین کے بائیں بچہ نئے نوڈ ہونا چاہئے. 756 01:02:07,280 --> 01:02:10,290 لیکن، ہم اس کے والدین پوائنٹر نہیں بہت ابھی تک. 757 01:02:10,290 --> 01:02:15,010 >> ہے تاکہ اسے حاصل کرنے کے لئے، ہم اصل میں اس کو ٹریک کرنے کی جا رہے ہیں جیسا کہ ہم نے درخت کے ذریعے جانا 758 01:02:15,010 --> 01:02:18,440 اور ہمارے اوپر لوپ میں مناسب جگہ کی تلاش کریں. 759 01:02:18,440 --> 01:02:26,840 ہم نے طومار کر کی طرف سے بیک اپ ہمارے داخل تقریب کے سب سے اوپر کر سکتے ہیں 760 01:02:26,840 --> 01:02:32,350 اور با خبر رکھنے کے ایک اور پوائنٹر متغیر والدین سے ملاقات کی. 761 01:02:32,350 --> 01:02:39,340 ہم اسے برابر قائم کرنے کے لئے ابتدائی طور پر لوڈ، اتارنا null رہے ہیں، 762 01:02:39,340 --> 01:02:43,640 اور پھر ہر بار ہم نے درخت کے ذریعے جانا، 763 01:02:43,640 --> 01:02:51,540 ہم والدین پوائنٹر موجودہ پوائنٹر سے ملنے کے لئے قائم کرنے کے لئے جا رہے ہیں. 764 01:02:51,540 --> 01:02:59,140 رائج برابر والدین مقرر کریں. 765 01:02:59,140 --> 01:03:02,260 اس طرح، ہر وقت ہے کہ ہم کے ذریعے جانا، 766 01:03:02,260 --> 01:03:05,550 ہم اس بات کا یقین کرنے کے لئے کہ کے طور پر موجودہ پوائنٹر ہو جاتا ہے incremented جا رہے ہیں 767 01:03:05,550 --> 01:03:12,640 والدین پوائنٹر مندرجہ ذیل ہے - صرف ایک سطح درخت میں موجودہ پوائنٹر سے زیادہ ہے. 768 01:03:12,640 --> 01:03:17,370 کہ تمام بہت اچھا لگ رہا ہے. 769 01:03:17,370 --> 01:03:22,380 >> مجھے لگتا ہے کہ ایک بات یہ ہے کہ ہم کو ایڈجسٹ چاہیں گے اس نوڈ واپس لوٹنے شہوت انگیز null کی تعمیر. 770 01:03:22,380 --> 01:03:25,380 میں نوڈ اصل کامیابی شہوت انگیز null واپس کی تعمیر کے لئے حاصل کرنے کے لئے، 771 01:03:25,380 --> 01:03:31,060 ہم اس کوڈ کو تبدیل کرنے کی ضرورت ہوگی، 772 01:03:31,060 --> 01:03:37,270 یہاں کیونکہ ہم نے تجربہ کیا اس بات کا یقین کر لیں کہ malloc ایک درست پوائنٹر واپس کرنے کے لئے کبھی نہیں. 773 01:03:37,270 --> 01:03:53,390 لہذا، اگر (ن = نل)، تو - 774 01:03:53,390 --> 01:03:55,250 اگر malloc ایک درست پوائنٹر واپس آئے، تو ہم اس کی ابتدا کریں گے؛ 775 01:03:55,250 --> 01:04:02,540 دوسری صورت میں، ہم صرف اور یہ کہ آخر ہمارے لئے، شہوت انگیز null واپس لوٹنے واپس کر دیں گے. 776 01:04:02,540 --> 01:04:13,050 اب یہ سب بہت اچھا لگ رہا ہے. چلو، اس بات کا یقین کر لیں کہ اس اصل سے آگاہ کرنے کے. 777 01:04:13,050 --> 01:04:22,240 بائنری درخت، اور اوہ، ہمیں کچھ ہو رہا ہے یہاں سامان ہے. 778 01:04:22,240 --> 01:04:29,230 >> ہم نے تقریب کی ایک انترنہیت اعلان نوڈ کی تعمیر ہے. 779 01:04:29,230 --> 01:04:31,950 پھر ان compilers کے ساتھ، ہم نے سب سے اوپر شروع کرنے جا رہے ہیں. 780 01:04:31,950 --> 01:04:36,380 کیا اس کا مطلب یہ ضروری ہے یہ ہے کہ میں نوڈ کی تعمیر بلا رہا ہوں اس سے پہلے کہ میں اصل میں یہ اعلان کیا ہے رہا ہوں. 781 01:04:36,380 --> 01:04:37,730 چلو کوڈ واپس واقعی جلدی جاؤ. 782 01:04:37,730 --> 01:04:43,510 ذیل میں سکرال کریں، اور اس بات کا یقین کے لئے کافی ہے، میرے داخل تقریب کا اعلان کیا ہے 783 01:04:43,510 --> 01:04:47,400 تعمیر نوڈ تقریب اوپر 784 01:04:47,400 --> 01:04:50,070 لیکن میں داخل کے اندر نوڈ کی تعمیر کے لئے استعمال کرنے کی کوشش کر رہا ہوں. 785 01:04:50,070 --> 01:05:06,610 میں کاپی اور میں جانے کے لئے جا رہا ہوں - اور پھر سب سے اوپر تعمیر نوڈ تقریب طرح یہاں چسپاں کر دیں. 786 01:05:06,610 --> 01:05:11,750 اس طرح کہ امید ہے کہ یہ کام کرے گا. آو دے جانے دوسرے. 787 01:05:11,750 --> 01:05:18,920 اب یہ سب سے آگاہ کریں. سب اچھا ہے. 788 01:05:18,920 --> 01:05:21,640 >> لیکن اس وقت، ہم اپنے داخل تقریب اصل میں نہیں ہے کہا جاتا ہے. 789 01:05:21,640 --> 01:05:26,510 ہم صرف یہ جانتے ہیں کہ اس سے آگاہ کریں، تو چلو میں جاؤ اور کچھ فون کے اندر ڈال 790 01:05:26,510 --> 01:05:28,240 چلو ہمارے مرکزی تقریب میں یہ کرتے ہیں. 791 01:05:28,240 --> 01:05:32,390 یہاں، ہم باہر 5، 8، اور 2 تبصرہ، 792 01:05:32,390 --> 01:05:36,680 اور پھر ہم انہیں تار نہیں کیا یہاں نیچے. 793 01:05:36,680 --> 01:05:41,640 چلو کچھ کالز کو داخل کرنے 794 01:05:41,640 --> 01:05:46,440 اور بھی چیزیں ایک ہی قسم ہے کہ ہم استعمال کیا استعمال 795 01:05:46,440 --> 01:05:52,810 جب ہم ان printf کالز نے اس بات کو یقینی بنانے کے لئے کہ سب کچھ کرنے کے لئے مناسب طریقے سے کیا داخل کرنے کے لئے. 796 01:05:52,810 --> 01:06:00,550 میں کاپی اور پیسٹ کرنے کی جا رہی ہوں، 797 01:06:00,550 --> 01:06:12,450 اور بجائے اس کے کہ پر مشتمل ہے ہم داخل کرنے کے لئے جا رہے ہیں. 798 01:06:12,450 --> 01:06:30,140 اور 6، 10، اور 1 کے بجائے، ہم نے 5، 8، اور 2 کو استعمال کرنے کے لئے جا رہے ہیں. 799 01:06:30,140 --> 01:06:37,320 یہ درخت میں 5، 8، اور 2 امید داخل چاہئے. 800 01:06:37,320 --> 01:06:44,050 آرکائیو. سب اچھا ہے. اب ہم ہمارے پروگرام اصل میں چلا کریں گے. 801 01:06:44,050 --> 01:06:47,330 >> سب کچھ جھوٹ لوٹ آئے. 802 01:06:47,330 --> 01:06:53,830 تو، 5، 8، اور 2 جاتے ہیں، نہیں کیا ہے اور ایسا لگتا ہے کہ پر مشتمل ہے انہیں نہیں ملا یا تو. 803 01:06:53,830 --> 01:06:58,890 یہ کیا ہو رہا ہے؟ چلو باہر زوم. 804 01:06:58,890 --> 01:07:02,160 پہلا مسئلہ تھا کہ داخل جھوٹے واپس لگ رہا تھا، 805 01:07:02,160 --> 01:07:08,750 اور یہ یہ ہے کیونکہ ہم نے ہماری واپسی جھوٹی کال میں چھوڑ دیا کی طرح لگتا ہے 806 01:07:08,750 --> 01:07:14,590 اور ہم سچ اصل میں کبھی نہیں واپس. 807 01:07:14,590 --> 01:07:17,880 ہم اس سیٹ اپ کر سکتے ہیں. 808 01:07:17,880 --> 01:07:25,290 دوسرا مسئلہ یہ ہے، اب یہاں تک کہ اگر ہم کرتے ہیں - اس کو بچانے کے، یہ چھوڑ 809 01:07:25,290 --> 01:07:34,530 دوبارہ چلانے، اس، تو مرتب اسے چلانے - 810 01:07:34,530 --> 01:07:37,670 ہم دیکھتے ہیں کہ کچھ یہاں ہوا ہے. 811 01:07:37,670 --> 01:07:42,980 5، 8، اور 2 درخت میں اب بھی پائے گئے کبھی نہیں. 812 01:07:42,980 --> 01:07:44,350 تو، کیا ہو رہا ہے؟ 813 01:07:44,350 --> 01:07:45,700 >> چلو کوڈ میں اس پر ایک نظر لے. 814 01:07:45,700 --> 01:07:49,790 چلو دیکھتے ہیں اگر ہم یہ اعداد و شمار کر سکتے ہیں. 815 01:07:49,790 --> 01:07:57,940 ہم والدین، شہوت انگیز null نہیں کیا جا رہا ہے کے ساتھ شروع کرتے ہیں. 816 01:07:57,940 --> 01:07:59,510 ہم نے موجودہ جڑ پوائنٹر کے برابر پوائنٹر قائم، 817 01:07:59,510 --> 01:08:04,280 اور ہم ہماری طرح درخت کے ذریعے نیچے کام پر جا رہے ہیں. 818 01:08:04,280 --> 01:08:08,650 اگر موجودہ نوڈ خالی نہیں ہے، تو ہم جانتے ہیں کہ ہم نیچے تھوڑا سا کو منتقل کر سکتے ہیں. 819 01:08:08,650 --> 01:08:12,330 ہم اپنے والدین پوائنٹر موجودہ پوائنٹر کے برابر ہو، 820 01:08:12,330 --> 01:08:15,420 قیمت کی جانچ پڑتال - اگر اقدار وہی ہیں ہم جھوٹے واپس. 821 01:08:15,420 --> 01:08:17,540 اگر اقدار کم ہیں ہم حق میں منتقل کردیا گیا ہے؛ 822 01:08:17,540 --> 01:08:20,399 دوسری صورت میں، ہم بائیں طرف منتقل ہو گیا ہے. 823 01:08:20,399 --> 01:08:24,220 اس وقت ہم نے ایک نوڈ کی تعمیر. میں تھوڑا سا میں زوم کریں گے. 824 01:08:24,220 --> 01:08:31,410 اور یہاں ہم اقدار تار اسی کوشش کرنے کے لئے جا رہے ہیں. 825 01:08:31,410 --> 01:08:37,250 یہ کیا ہو رہا ہے؟ چلو دیکھتے ہیں اگر ممکنہ Valgrind ہمیں ایک اشارہ دے سکتے ہیں. 826 01:08:37,250 --> 01:08:43,910 >> میں Valgrind استعمال کرنے کے لئے صرف اس لئے کہ واقعی Valgrind تیزی سے چلتا ہے 827 01:08:43,910 --> 01:08:46,729 اور آپ کو بتاتا ہے اگر کوئی میموری غلطیاں ہیں. 828 01:08:46,729 --> 01:08:48,300 ہم نے کوڈ پر Valgrind جب چلاتے ہیں، 829 01:08:48,300 --> 01:08:55,859 دائیں here--Valgrind./binary_tree--and ہٹ میں داخل کریں جیسا کہ آپ دیکھ سکتے ہیں. 830 01:08:55,859 --> 01:09:03,640 تم نے دیکھا ہے کہ ہم کسی بھی میموری نقص نہیں تھا، تو ایسا لگتا ہے کہ سب کچھ ٹھیک ہے اب تک. 831 01:09:03,640 --> 01:09:07,529 ہم نے کچھ میموری لیک، جو ہم جانتے ہیں کہ ہے، کیونکہ ہم نہیں ہیں 832 01:09:07,529 --> 01:09:08,910 ہمارے مراکز کی کسی آزاد ہو رہا ہے. 833 01:09:08,910 --> 01:09:13,050 چلو GDB چل رہا ہے جو اصل میں ہو رہا ہے دیکھ کر کرنے کی کوشش کریں. 834 01:09:13,050 --> 01:09:20,010 ہم gdb کرنا / binary_tree گے. یہ ٹھیک ہٹا دیا ہے. 835 01:09:20,010 --> 01:09:23,670 میں داخل پر ایک بریک پوائنٹ قائم ہوں. 836 01:09:23,670 --> 01:09:28,600 چلانے. 837 01:09:28,600 --> 01:09:31,200 ایسا لگتا ہے جیسے ہم داخل اصل میں کبھی نہیں کہا جاتا. 838 01:09:31,200 --> 01:09:39,410 ایسا لگتا ہے کہ مسئلہ صرف یہ ہے کہ جب میں نیچے اہم میں تبدیل تھا - 839 01:09:39,410 --> 01:09:44,279 کے تمام پر مشتمل ہے سے ان printf کالز - 840 01:09:44,279 --> 01:09:56,430 میں یہ اصل میں کبھی نہیں تبدیل داخل فون کرنے کی. 841 01:09:56,430 --> 01:10:01,660 اب ہم اسے ایک بار آزمائیں. تالیف ہے. 842 01:10:01,660 --> 01:10:09,130 سب اچھا لگ رہا ہے. اب کوشش کرتے ہیں چلانا دیکھو، کیا ہوتا ہے. 843 01:10:09,130 --> 01:10:13,320 ٹھیک ہے! سب کچھ خوبصورت وہاں اچھا لگ رہا ہے. 844 01:10:13,320 --> 01:10:18,130 >> فائنل کے بارے میں سوچنے کی بات یہ ہے کہ، یہ شامل کرنے کے لئے کوئی کنارے مقدمات ہیں؟ 845 01:10:18,130 --> 01:10:23,170 اور یہ پتہ چلا ہے کہ، اچھی طرح، ایک کنارے کیس ہے جو ہمیشہ ہے اور کے بارے میں سوچنے کے لئے دلچسپ 846 01:10:23,170 --> 01:10:26,250 ہے، اگر آپ کا درخت خالی ہے کیا ہوتا ہے اور آپ اس داخل کی تقریب کہتے ہیں؟ 847 01:10:26,250 --> 01:10:30,330 یہ کام کرے گا؟ چلو، کوشش دے. 848 01:10:30,330 --> 01:10:32,110 - binary_tree C - 849 01:10:32,110 --> 01:10:35,810 جس طرح سے ہم اس کی جانچ کے لئے جا رہے ہیں، ہم کر رہے ہیں ہمارے مرکزی تقریب نیچے جا رہا، 850 01:10:35,810 --> 01:10:41,690 بلکہ اس طرح ان مراکز کی وائرنگ اپ سے 851 01:10:41,690 --> 01:10:56,730 ہم صرف پوری بات پر تبصرہ کرنے جا رہے ہیں، 852 01:10:56,730 --> 01:11:02,620 اور نوڈس خود اپ کی وائرنگ کی بجائے، 853 01:11:02,620 --> 01:11:09,400 ہم صرف اصل میں آگے بڑھو اور اس کی سب کو خارج کر سکتے ہیں. 854 01:11:09,400 --> 01:11:17,560 ہم داخل کی کال کے سب کچھ کرنے کے لئے جا رہے ہیں. 855 01:11:17,560 --> 01:11:49,020 تو، کیا - کے بجائے 5، 8، اور 2، ہم 7 داخل، 3، اور 9 جا رہے ہیں. 856 01:11:49,020 --> 01:11:58,440 اور پھر ہم 6 کے طور پر داخل بھی چاہیں گے. 857 01:11:58,440 --> 01:12:05,190 محفوظ کریں. بند کرو. بائنری درخت کرو. 858 01:12:05,190 --> 01:12:08,540 یہ سب سے آگاہ کریں. 859 01:12:08,540 --> 01:12:10,320 ہم اسے صرف چلا سکتے ہیں اور دیکھتے ہیں کیا ہوتا ہے، 860 01:12:10,320 --> 01:12:12,770 لیکن یہ بھی بہت ضروری ہونے جا رہا ہے یقین ہے کہ 861 01:12:12,770 --> 01:12:14,740 ہم کسی بھی میموری کی غلطیوں کو نہیں ہے، 862 01:12:14,740 --> 01:12:16,840 چونکہ یہ ہمارے کنارے مقدمات میں کہا گیا ہے کہ ہم کے بارے میں جانتے ہیں میں سے ایک ہے. 863 01:12:16,840 --> 01:12:20,150 >> چلو اس بات کا یقین کر لیں کہ کہ یہ Valgrind کے تحت کام کرتا ہے، 864 01:12:20,150 --> 01:12:28,310 جس سے ہم صرف Valgrind binary_tree / چلانے کی طرف سے کر دونگا. 865 01:12:28,310 --> 01:12:31,110 ایسا لگتا ہے جیسا کہ ہم نے واقعی ایک سیاق و سباق سے ایک غلطی ہے - 866 01:12:31,110 --> 01:12:33,790 ہم اس انقطاع کی غلطی ہے. 867 01:12:33,790 --> 01:12:36,690 کیا ہوا ہے؟ 868 01:12:36,690 --> 01:12:41,650 Valgrind اصل میں ہمیں بتاتی ہے کہ وہ کہاں ہے. 869 01:12:41,650 --> 01:12:43,050 تھوڑا سا زوم. 870 01:12:43,050 --> 01:12:46,040 ایسا لگتا ہے جیسے یہ ہمارے داخل تقریب میں کیا ہو رہا ہے، 871 01:12:46,040 --> 01:12:53,420 جہاں ہم داخل میں 4 سائز کے ایک جعلی پڑھا ہے، اوپر 60. 872 01:12:53,420 --> 01:13:03,590 چلو، واپس جاؤ اور دیکھو یہاں کیا ہو رہا ہے. 873 01:13:03,590 --> 01:13:05,350 باہر زوم واقعی جلد. 874 01:13:05,350 --> 01:13:14,230 میں اس بات کا یقین کر لیں کہ یہ سکرین کے کنارے نہیں جاتے تاکہ ہم سب کچھ دیکھ سکتے ہیں بنانے کے لئے چاہتے ہیں. 875 01:13:14,230 --> 01:13:18,760 تھوڑا سا میں ھیںچو. ٹھیک ہے. 876 01:13:18,760 --> 01:13:35,030 ذیل میں سکرال اور مسئلہ یہیں پر ہے. 877 01:13:35,030 --> 01:13:40,120 اگر ہم حاصل کرتے ہیں تو کیا ہوتا ہے اور ہماری موجودہ نوڈ پہلے ہی شہوت انگیز null، 878 01:13:40,120 --> 01:13:44,010 ہمارے والدین نوڈ خالی ہے، اگر ایسا ہے تو ہم بہت اوپر ہے، یہیں پر دیکھ - 879 01:13:44,010 --> 01:13:47,340 اگر یہ دیر لوپ اصل میں کبھی نہیں executes 880 01:13:47,340 --> 01:13:52,330 کیونکہ ہماری موجودہ قدر خالی ہے - ہماری جڑ خالی ہے تو رائج شہوت انگیز null ہے - 881 01:13:52,330 --> 01:13:57,810 تو ہمارے والدین رائج یا ایک درست قیمت کبھی نہیں قائم ہو جاتا ہے، 882 01:13:57,810 --> 01:14:00,580 تو، والدین، شہوت انگیز null بھی ہو جائے گا. 883 01:14:00,580 --> 01:14:03,700 ہم اس کے لئے چیک کرنے کے لیے یاد کرنے کی ضرورت ہے 884 01:14:03,700 --> 01:14:08,750 وقت تک ہم یہاں ملتا ہے، اور ہم والدین قدر تک رسائی حاصل کرنے شروع. 885 01:14:08,750 --> 01:14:13,190 تو کیا ہوتا ہے؟ ٹھیک ہے، اگر والدین شہوت انگیز null ہے - 886 01:14:13,190 --> 01:14:17,990 اگر (والدین == نل) - تو ہم جانتے ہیں کہ 887 01:14:17,990 --> 01:14:19,530 درخت میں کچھ بھی نہیں ہونا چاہئے. 888 01:14:19,530 --> 01:14:22,030 ہم نے اسے جڑ میں داخل کرنے کی کوشش کر رہا ہے. 889 01:14:22,030 --> 01:14:32,570 ہم صرف نئے نوڈ کے برابر جڑ قائم کرنے کی طرف سے کر سکتے ہیں. 890 01:14:32,570 --> 01:14:40,010 اس کے بعد، ہم اس مقام پر ان دوسری چیزوں کے ذریعے جانے کے لئے اصل میں نہیں چاہتا. 891 01:14:40,010 --> 01:14:44,780 اس کے بجائے، ٹھیک ہے یہاں، ہم یا تو ایک کے کسی اور اگر کسی کے کر سکتے ہیں، 892 01:14:44,780 --> 01:14:47,610 یا ہم سب کچھ جمع اور ایک یہاں کر سکتے ہیں، 893 01:14:47,610 --> 01:14:56,300 لیکن یہاں ہم اور صرف اور اسے اس طرح کرنا استعمال کریں گے. 894 01:14:56,300 --> 01:14:59,030 اب، ہم ٹیسٹ اس بات کا یقین کریں کہ ہمارے والدین خالی نہیں ہے کر رہے ہیں 895 01:14:59,030 --> 01:15:02,160 اس وقت سے پہلے اصل میں اس کے شعبوں تک رسائی حاصل کرنے کی کوشش کر رہے ہیں. 896 01:15:02,160 --> 01:15:05,330 اس سے ہماری مدد انقطاع غلطی سے بچنے کے. 897 01:15:05,330 --> 01:15:14,740 تو ہم نے چھوڑ دیا، باہر زوم، مرتب، چلائیں. 898 01:15:14,740 --> 01:15:18,130 >> کوئی غلطیاں نہیں، لیکن ہم اب بھی میموری لیک کا ایک گروپ ہے 899 01:15:18,130 --> 01:15:20,650 کیونکہ ہم ہمارے مراکز کی کسی بھی آزاد نہیں کیا. 900 01:15:20,650 --> 01:15:24,350 لیکن، اگر ہم یہاں جانا اور ہم اپنے پرنٹ آؤٹ پر نظر، 901 01:15:24,350 --> 01:15:30,880 ہم دیکھتے ہیں کہ ٹھیک ہے، ہمارے اضافہ طرح لگتا ہے سچ آرہے ہیں، جو اچھا ہے. 902 01:15:30,880 --> 01:15:33,050 اضافہ سب سچ ہے، 903 01:15:33,050 --> 01:15:36,670 اور پھر مناسب پر مشتمل ہے کالز بھی سچ ہے. 904 01:15:36,670 --> 01:15:41,510 >> اچھا کام ہے! ایسا لگتا ہے جیسے ہم نے کامیابی کے ساتھ داخل لکھا ہے. 905 01:15:41,510 --> 01:15:47,430 وہ سب ہم اس ہفتے کے مسائل سیٹ تفصیلات کے لئے ہے. 906 01:15:47,430 --> 01:15:51,720 ایک تفریح ​​کے بارے میں سوچنے کے لئے چیلنج ہے کہ آپ کس طرح میں اصل گے 907 01:15:51,720 --> 01:15:55,340 اور اس پیڑ کے مراکز کی تمام. 908 01:15:55,340 --> 01:15:58,830 ہم مختلف طریقوں کی ایک بڑی تعداد کر سکتے ہیں، 909 01:15:58,830 --> 01:16:01,930 لیکن مجھے چھوڑ دو تم استفادہ کرنے کے اس تجربے کو کریں گے، 910 01:16:01,930 --> 01:16:06,080 اور ایک مذاق کے چیلنج کے طور پر، اور اس بات کا یقین کر لیں کہ آپ اس بات کا یقین کر سکتے ہیں کرنے کی کوشش 911 01:16:06,080 --> 01:16:09,490 کہ اس Valgrind رپورٹ غلطیوں اور کوئی لیک واپس. 912 01:16:09,490 --> 01:16:12,880 >> گڈ لک، اس ہفتے Huffman کوڈنگ مسئلہ سیٹ پر 913 01:16:12,880 --> 01:16:14,380 اور ہم اگلے ہفتے آپ کو نظر آئے گا! 914 01:16:14,380 --> 01:16:17,290 [CS50.TV]