[Powered by Google Translate] [دفعہ 7: زیادہ آرام دہ اور پرسکون]
[روب Bowden] [ہارورڈ یونیورسٹی]
[یہ CS50 ہے] [CS50.TV]
ٹھیک ہے. تو جیسا کہ میں نے کہا کہ اپنے ای میل میں،
یہ ایک بائنری درخت بہترين حصے کی جا رہی ہے.
لیکن اس کے کہ بہت سے سوالات کے جواب نہیں ہیں.
تو ہم اور باہر ہر سوال کو اپنی طرف متوجہ کرنے کی کوشش کی جا رہے ہیں
اور تمام کام کرنے کے بہترین طریقوں میں سے دردناک تفصیل میں جانا.
تو شروع میں ہم بائنری درخت اور سامان کا نمونہ ڈرائنگ کے ذریعے جاتے ہیں.
تو یہاں، یاد رکھیں کہ ایک بائنری درخت ایک لنک کی فہرست کے لوگوں کی طرح نوڈس ہے،
بائیں 'کے بچے' کے لیے ایک ایک پوائنٹر کے بجائے سوائے اس کے کہ دو ہیں
اور صحیح 'بچے' کے لئے ایک. "
ایک بائنری درخت تو صرف ایک لنک کی فہرست کی طرح ہے،
struct سوائے دو اشارہ ہے جا رہا ہے.
trinary درخت، جس میں تین اشارہ کر جا رہے ہیں ہے،
N اے آر وائی کے درخت، جس میں صرف ایک عام پوائنٹر ہے ہیں
کہ آپ تو اتنا بڑا ہے malloc ہو
تمام ممکن بچوں کو کافی اشارہ.
تو بائنری درخت صرف دونوں کی ایک مسلسل تعداد پر ہوتا ہے.
اگر آپ چاہتے ہیں، آپ نے ایک یک رکنی درخت کے طور پر ایک لنک کی فہرست دے کر سکتے ہیں،
لیکن مجھے نہیں لگتا یہ ہے کہ کسی کو بھی کال ہے.
"ایک بائنری درخت نوڈ کے آریھ باکس اور تیر ڈرا
نیٹ پسندیدہ نمبر، 7، جہاں ہر بچے پوائنٹر خالی ہے. پر مشتمل "
تو رکن موڈ.
>> یہ خوبصورت براہ راست جا رہا ہے.
ہم صرف ایک نوڈ کے لئے جا رہے ہیں، میں ایک مربع کے طور پر اپنی طرف متوجہ کریں گے.
اور میں یہاں اقدار کو اپنی طرف متوجہ کریں گے.
تو قدر یہاں جائیں گے،
اور پھر یہاں نیچے ہم بائیں طرف کے بائیں پوائنٹر اور دائیں طرف کے دائیں پوائنٹر پڑے گا.
اور یہ بہت زیادہ ہے تاکہ کنونشن بائیں اور دائیں، پوائنٹر ناموں کو فون کرنے کی ہے.
ان میں سے دونوں شہوت انگیز null ہونے جا رہے ہیں.
یہ اتارنا null صرف، اور یہ کہ، شہوت انگیز null صرف ہو جائے گا جائے گا.
ٹھیک ہے. تو یہاں کی حمایت.
انہوں نے کہا کہ ایک لنک کی فہرست کے ساتھ، ہم صرف ایک پوائنٹر ذخیرہ تھا
فہرست کے لئے پوری منسلک فہرست، یا پوری فہرست کو یاد کرنے میں سب سے پہلے نوڈ.
اسی طرح، درختوں کے ساتھ، ہم صرف پوائنٹر محفوظ ہے
ایک نوڈ کے لئے پورے درخت کو یاد کرنے کے لئے.
یہ نوڈ calle درخت کی جڑ ہے.
پہلے سے آپ کے آریھ وسلم کی تعمیر یا ایک نیا متوجہ
اس طرح ہے کہ آپ کو ایک بائنری درخت کی عکاسی باکس اور تیر ہے
کے ساتھ 7 قدر، پھر بائیں سمت میں 3،
تو دائیں طرف کے 9، اور پھر 6 3 حق ہے. "
چلو دیکھتے ہیں اگر میں میرے دماغ میں اس کے بارے میں سب کو یاد ہے.
تو یہ ہمارے یہاں جڑ بننے جا رہا ہے.
ہم کہیں کچھ پوائنٹر ہے، ایک ایسی چیز ہے جس پر ہم نے جڑ کو بلاتا ہوں گے،
اور یہ اس آدمی کی طرف اشارہ کرتے ہوئے ہے.
اب ایک نیا نوڈ بنانے کے لئے،
جو ہم بائیں، 3 ہے؟
3 کے ساتھ ایک نیا نوڈ تو، اور اسے ابتدائی طور پر لوڈ، اتارنا null اشارہ ہے.
میں N. صرف ڈال دیتا ہوں
اب ہم کہ 7 بائیں کرنا چاہتے ہیں.
تو ہم اس پوائنٹر اب اس آدمی کی طرف اشارہ تبدیل کریں.
اور ہم ایسا ہی کرتے ہیں. ہم یہاں 9 چاہتے ہیں
جو ابتدا میں صرف شہوت انگیز null کا کہنا ہے کہ.
ہم اس پوائنٹر نقطہ، 9 کو تبدیل کرنے جا رہے ہیں،
اور اب ہم 3 کے حق 6 رکھنا چاہتا ہوں.
تو چل رہا ہے - 6 ایک.
اور اس آدمی کی طرف اشارہ کریں گے.
ٹھیک ہے. تو یہ ہے یہ سب ہم سب کو تم پر سے کرنا ہے.
>> اب کچھ اصطلاحات میں جانے کے.
ہم نے پہلے ہی کس طرح درخت کی جڑ درخت میں سب سے زیادہ سب سے زیادہ نوڈ ہے کے بارے میں بات کی تھی.
ایک 7 مشتمل ہے. درخت کے سب سے نیچے دیئے گئے نوڈس پتے کہا جاتا ہے.
کوئی بھی نوڈ ہے جو صرف اس کے بچوں کو، شہوت انگیز null ہے پتی ہے.
لہذا یہ ممکن ہے، اگر ہمارے بائنری پیڑ صرف ایک نوڈ ہے،
کہ ایک درخت پتی ہے، اور یہ کہ یہ ہے.
درخت کی اونچائی 'hops کی تعداد ہے آپ کو بنانا ہے
اوپر سے پتی حاصل کرنے کے لئے. "
ہم نے ایک سیکنڈ میں میں حاصل، اختلاف کریں گے
، متوازن اور اسنتلیت بائنری درختوں کے درمیان
لیکن اب کے لئے اس درخت کی مجموعی اونچائی
میں کہتا ہوں 3 ہے، کریں گے تاہم اگر آپ hops کی تعداد شمار
آپ 9 حاصل کرنے کے لئے بنانے کے لئے ہے، تو یہ واقعی صرف 2 کی اونچائی ہے.
اب یہ ایک اسنتلیت بائنری درخت ہے،
لیکن ہم متوازن کے بارے میں بات کی تھی جب اسے متعلقہ ہو جاتا ہے کریں گے.
تو اب ہم معاملے میں ایک درخت میں نوڈس کے بارے میں بات کر سکتے ہیں
درخت کے دیگر مراکز میں.
تو اب ہم والدین، بچوں، بہن بھائیوں، باپ دادا، اور اولاد ہے.
وہ بہت عقل ہیں، کہ وہ کیا مطلب ہے.
اگر ہم چاہتے ہیں - یہ والدین.
تو 3 والدین ہے؟
[طلباء] 7. >> جی ہاں. والدین کو صرف آپ کو کیا اشارہ جا رہا ہے.
تو کیا 7 بچے ہیں؟
[طلباء] 3 اور 9. >> جی ہاں.
یاد رکھیں کہ "بچوں" کا لفظی بچوں کا مطلب ہے،
6 تو درخواست دے، نہیں کیونکہ یہ ایک پوتا کی طرح ہے.
لیکن اس وقت اگر ہم اولاد جاتے ہیں، تو کیا 7 کے خاندان ہیں؟
[طلباء] 3، 6 اور 9. >> جی ہاں.
جڑ نوڈ کے خاندان کے درخت میں سب کچھ ہونے جا رہا ہے،
سوائے شاید جڑ نوڈ ہی، اگر آپ غور کریں کہ اولاد نہیں کرنا چاہتا.
اور آخر میں، پتروں، تو اس مخالف سمت ہے.
تو 6 پتروں ہیں؟
[طلباء] 3 اور 7. >> جی ہاں. 9 نہیں شامل کیا گیا ہے.
یہ صرف براہ راست خاندان جڑ واپس آ گیا ہے
تمہارے باپ دادا کو ہونے جا رہا ہے.
>> "ہم کا کہنا ہے کہ ایک بائنری درخت اگر درخت میں ہر نوڈ کے لئے حکم دیا ہے،
بائیں جانب اس کے تمام اولاد کم اقدار ہیں
اور دائیں طرف والوں میں سب زیادہ اقدار ہے.
مثال کے طور پر، اوپر درخت کا حکم دیا لیکن یہ صرف ممکن انتظامات کا حکم دیا نہیں ہے ہے. "
اس سے پہلے کہ ہم اس پر،
ایک حکم دیا بائنری درخت ایک بائنری تلاش درخت کے طور پر بھی جانا جاتا ہے.
ہم یہاں ہو، یہ ایک حکم دیا بائنری درخت بلا رکھا جائے
لیکن میں نے کبھی نہیں سنا ہے یہ ایک حکم دیا بائنری درخت سے پہلے کہا جاتا ہے،
اور ہم نے ایک گئے تمام سوالات پر بہت زیادہ بائنری تلاش کے درخت ڈال کا امکان ہے.
وہ ایک ہی ہیں،
اور یہ ضروری ہے آپ کو بائنری درخت اور بائنری تلاش درخت کے درمیان فرق کو تسلیم ہے.
ایک بائنری پیڑ صرف ایک درخت ہے کہ دو چیزوں پوائنٹس.
ہر نوڈ دو چیزوں کی طرف اشارہ ہے.
اقدار کہ یہ اشارہ کے بارے میں کوئی استدلال ہے.
تو یہاں اچھا لگتا ہے، کیونکہ یہ ایک بائنری تلاش درخت ہے،
ہم جانتے ہیں کہ اگر ہم 7 چھوڑ دیا،
تو اقدار کہ ہم ممکنہ تک رسائی حاصل کر سکتے ہیں سب
7 چھوڑ کی طرف سے 7 سے کم ہونا ہے.
یاد رکھیں کہ کم 7 سے زائد اقدار 3 اور 6.
وہ 7 بائیں سب ہیں.
اگر ہم 7 کے حق میں جاتے ہیں، سب کچھ 7 سے بڑا ہونا ہے،
تو 9 7 کا حق ہے، تو ہم اچھے ہیں.
یہ ایک بائنری درخت کے لئے ایسا نہیں ہے،
ایک باقاعدہ بائنری درخت کے لئے ہم نے بائیں جانب سب سے اوپر، 7 3 ہو سکتا ہے،
7 بائیں 9، کوئی کا حکم ہے جو اقدار کی.
اب، ہم اصل میں یہ نہیں کر گا کیونکہ یہ تکاؤ اور غیر ضروری ہے،
لیکن کئی کے طور پر کا حکم دیا درخت کے طور پر آپ کے بارے میں سوچ کر سکتے ہیں کرنے کے لئے اپنی طرف متوجہ کرنے کی کوشش کریں
7 نمبر، 3، 9 کا استعمال کرتے ہوئے، اور 6.
کتنے الگ انتظامات ہیں؟ ہر ایک کی بلندی کیا ہے؟ "
>> ہم ایک جوڑے کرتے ہیں، لیکن مرکزی خیال ہے.
یہ کوئی راستہ نہیں ان اقدار پر مشتمل ایک بائنری درخت کی ایک منفرد نمائندگی میں ہے.
ہم سب کی ضرورت ہے کچھ بائنری درخت ہے کہ 7 پر مشتمل ہے، 3، 6، اور 9 ہے.
ایک اور ممکنہ درست جڑ 3 جائے گا،
بائیں اور یہ 6 ہے، بائیں طرف اور یہ 7 ہے،
بائیں جاؤ اور اسے 9 ہے.
یہ ایک بالکل درست بائنری تلاش درخت ہے.
یہ بہت مددگار ثابت نہیں ہے، کیونکہ یہ صرف ایک لنک کی فہرست کی طرح ہے
اور یہ اشارہ صرف شہوت انگیز null ہیں.
لیکن یہ ایک درست درخت ہے. جی ہاں؟
[Student کی] کیا اقدار دائیں طرف زیادہ ہونا پڑے گا؟
یا یہ -؟ یہ >> میں نے دوسری طرف جانے کے لئے کا مطلب ہے.
اس کے علاوہ ہے - جی ہاں، کہ سوئچ.
9، 7، 6، 3. اچھا پکڑنے.
یہ ابھی بھی اطاعت کی جاتی ہے جو ایک بائنری درخت کی تلاش کرنا چاہئے ہے ہے.
تو سب کچھ بائیں کسی بھی نوڈ سے کم ہے.
ہم صرف اتنا کہنا میں منتقل، 6 اس سکتا ہے اسے یہاں رکھ.
نہیں، ہم نہیں کر سکتے. میں یہ ہے کہ ایسا کیوں کرتے رہتے ہو؟
چلو کرتے ہیں - یہاں 6 ہے، یہاں 7 ہے، 3 سے 6 پوائنٹس.
یہ اب بھی ایک درست بائنری تلاش درخت ہے.
کیا غلط ہے اگر میں - چلو دیکھتے ہیں اگر میں ایک انتظام کے ساتھ آ سکتا ہے.
جی ہاں، ٹھیک ہے. تو کیا اس درخت کے ساتھ غلط کیا ہے؟
مجھے لگتا ہے کہ میں نے پہلے ہی آپ کو ایک اشارہ ہے کہ اس کے ساتھ کچھ گڑبڑ ہے دیا.
میں یہ ہے کہ ایسا کیوں کرتے رہتے ہو؟
ٹھیک ہے. یہ مناسب لگتا ہے.
اگر ہم ہر نوڈ، 7 کی طرح، پھر 7 بائیں پر نظر 3 ہے.
3 حق بات تو ہم 3 ہے، 6 ہے.
اور اگر تم 6 بجے دیکھیں، 6 حق بات 9 ہے.
تو یہ کیوں نہیں ہے ایک درست بائنری تلاش درخت ہے؟
[9 طلباء] 7 بائیں بھی ہے. >> جی ہاں.
یہ سچ ہے کہ تمام اقدار 7 بائیں میں جانے کے کی طرف سے ممکنہ طور پر تک رسائی حاصل کر سکتے ہیں 7 سے کم ہیں ہونا ضروری ہے.
اگر ہمیں جانا ہے 7 چھوڑ، ہم نے 3 حاصل کرنے کے لئے اور ہم 6 اب بھی حاصل کر سکتے ہیں،
ہم ابھی تک 9 سے حاصل سے کم 7 گئے لیکن کر سکتے ہیں،
ہم ایک بڑی تعداد ہے جو 7 سے بڑا ہے پر حاصل کرنے کے لئے کے قابل نہیں ہونا چاہئے.
تو یہ ایک درست بائنری تلاش درخت نہیں ہے.
>> میرا بھائی اصل میں ایک انٹرویو سوال تھا
جو بنیادی طور پر توثیق کچھ اس، صرف کوڈ تھا
کہ ایک درخت ایک بائنری تلاش درخت ہے،
اور تو سب سے پہلے جس چیز سے اس نے صرف دیکھنے کے لئے چیک کرنے کے لیے
اگر بائیں اور دائیں درست ہیں، اور پھر وہاں iterate.
لیکن آپ نہ صرف اس کے کر سکتے ہیں، آپ کو ٹریک رکھنے کے لئے ہے
حقیقت یہ ہے کہ اب کہ میں 7 چھوڑ چلے گئے،
اس subtree میں سب کچھ لازمی طور پر 7 سے کم ہونا چاہئے.
درست الگورتھم ٹریک رکھنے کے لئے کی ضرورت ہے
حد ہے کہ اقدار اندر ممکنہ گر کر سکتے ہیں کے
ہم نے ان تمام کے ذریعے نہیں جائیں گے.
ایک اچھا تکرار کا تعلق ہے،
اگرچہ ہم ان ملا نہیں ہے، یا ہم ان سے نہیں ملے گا،
وضاحت کتنے اصل میں ہیں.
تو ان میں سے 14 ہیں.
تم اسے کس طرح کرتے خیال mathematically کی طرح ہے،
آپ کو کسی ایک کو لینے جڑ نوڈ کر سکتے ہیں،
اور اس کے بعد اگر میں 7 لینے جڑ نوڈ،
تو ہیں، کا کہنا ہے کہ کچھ تعداد ہے کہ میری بائیں نوڈ جا سکتے ہیں،
اور کچھ تعداد یہ میرا حق نوڈ کو ہو سکتا ہے،
لیکن اگر میں کل تعداد، تو رقم بائیں طرف جا سکتے ہیں ن
جمع رقم کو درست کرنے جا سکتے ہیں (ن) ہے - 1.
تو باقی کی تعداد کے، وہ یا تو بائیں یا دائیں جا سکے ہیں.
یہ مشکل لگتا ہے کہ، اگر میں 3 ڈالا پہلے تو سب کچھ بائیں طرف جانا ہے،
لیکن اگر میں 7 ڈال، تو کچھ چیزیں بائیں جاؤ اور کچھ معاملات کو درست کرنے جا سکتے ہیں کر سکتے ہیں.
اور میں نے '3 پہلا 'سے مراد سب کچھ ٹھیک جا سکتے ہیں.
یہ سچ ہے، تم صرف اس کے بارے میں سوچنا ہے،
کتنی چیزیں درخت کی اگلی سطح پر جا سکتے ہیں.
اور اس کے باہر نکل آئے 14 ہو، یا آپ کو ان میں سے سب کو اپنی طرف متوجہ کر سکتے ہیں،
اور پھر آپ کو 14 ملے گی.
>> ، یہاں واپس جانا
"حکم دیا بائنری درخت ٹھنڈی ہیں کیونکہ ہم ان کے ذریعے تلاش کر سکتے ہیں
ایک بہت ہی کے مطابق صف پر تلاش کرنے کا ایک طریقہ ہے.
ایسا کرنے کے لئے، ہم جڑ شروع، اور درخت کے نیچے ہماری طرح کام
پتے کی طرف، کی اقدار سے ہم کے لئے تلاش کر رہے ہیں کے خلاف ایک نوڈ اقدار کی جانچ پڑتال.
اگر موجودہ نوڈ کی قدر قیمت سے کم ہے ہم کے لئے تلاش کر رہے ہیں،
آپ نوڈ کے حق بچے کو اگلے جاتے ہیں.
دوسری صورت میں، آپ نوڈ کی بائیں بچے کو جاتے ہیں.
کچھ وقت، آپ کو آپ کے لئے تلاش کر رہے ہیں میں قیمت یا تو تلاش کر سکتے یا آپ شہوت انگیز null میں چلے جائیں گے کریں گے،
قیمت اشارہ درخت میں نہیں ہے. "
میں درخت ہم پہلے redraw ہے، جو ایک دوسرے لے جائیں گے.
لیکن ہم اوپر دیکھو کہ 6، 10، اور 1 درخت میں ہیں کرنا چاہتے ہیں.
تو وہ کیا تھا، 7، 9، 3، 6. ٹھیک ہے.
تعداد آپ کو دیکھنا چاہتا ہوں، ہم نے 6 سے دیکھنا چاہتا ہوں.
یہ کس طرح اس کی الگورتھم کام؟
ٹھیک ہے، ہم بھی کچھ جڑ ہمارے درخت پوائنٹر ہے.
اور ہم جڑ سے جاؤ اور کہیں گے، اس قدر ہم کو تلاش کر رہے ہیں کے برابر قیمت ہے؟
تو ہم 6 کے لئے تلاش کر رہے ہیں، تو اس کے برابر نہیں ہے.
تو ہم جا رہو، اور اب ہم کہتے ہیں، ٹھیک ہے، تو 6 7 سے بھی کم ہے.
کیا اس کا مطلب ہے کہ ہم بائیں طرف جانے کے لئے چاہتے ہیں، یا کیا ہم حق پر جانے کے لئے کرنا چاہتے ہیں؟
[Student کی] بائیں. >> جی ہاں.
یہ نمایاں طور پر آسان ہے، سب تمہیں کیا کرنا ہے ایک درخت کے ممکن نوڈ کو اپنی طرف متوجہ ہے
کی بجائے اپنے سر میں سوچنے کی کوشش کر رہے - اور اس کے بعد آپ کو مت پہنچاو
ٹھیک ہے، اگر یہ کم ہے، میں بائیں جاتے ہو یا ٹھیک ہے، جاؤ
صرف اس تصویر کو دیکھ کر، یہ بہت واضح ہے کہ میں بائیں طرف جانے کے لئے ہے
اگر یہ نوڈ قدر کہ میں دیکھ رہا ہوں اس سے بڑا ہے.
تو آپ کو بائیں طرف جانے کے، اب میں 3 میں ہوں.
میں چاہتا ہوں - 3 قدر میں کے لئے دیکھ رہا ہوں، جس میں 6 ہے کے مقابلے میں کم ہے.
تو ہم حق پر جانے کے لئے، اور اب میں 6 بجے ختم،
جو قیمت میں دیکھ رہا ہوں، تو میں سچ واپس ہے.
اگلے قیمت میں تلاش کرنے کے لئے جا رہا ہوں 10 ہے.
ٹھیک ہے. کاٹ کہ - - جڑ کی پیروی کرنے والے، 10، اب، جا رہا ہے.
اب، 10 7 سے بڑا ہونا ہے، تو میں حق پر دیکھنا چاہتا ہوں.
میں یہاں آنے جا رہا ہوں، 10 9 سے بڑا ہونا جا رہا ہے،
تو میں حق پر دیکھنا چاہتا ہوں کے لئے جا رہا ہوں.
میں یہاں آتے ہیں، لیکن یہاں پر اب مجھے شہوت انگیز null میں ہوں.
میں کیا کروں اگر میں نے شہوت انگیز null مارا ہے؟
[Student کی] جھوٹی واپس؟ >> جی ہاں. میں 10 نہیں ملا.
1 تقریبا ایک جیسی معاملہ بننے جا رہا ہے،
سوائے یہ صرف flipped رکھا جائے جا رہا ہے، کی بجائے تلاش
دائیں جانب نیچے، میں نیچے بائیں جانب نظر جا رہا ہوں.
>> اب مجھے لگتا ہے کہ ہم واقعی کوڈ حاصل کرنے کے لئے.
CS50 آلات کو کھولنے اور وہاں اپنا راستہ پر - یہاں ہے جہاں
لیکن تم نے بھی خلا میں ایسا کر سکتے ہیں.
یہ شاید اسے خلا میں مثالی ہے،
کیونکہ ہم خلا میں کام کر سکتے ہیں.
"سب سے پہلے ہم ایک بائنری درخت int اقدار پر مشتمل نوڈ کے لئے ایک نئی قسم کی تعریف کی ضرورت ہو گی.
ذیل typedef boilerplate کا استعمال کرتے ہوئے،
ایک بائنری درخت میں ایک نوڈ کے لئے ایک نئی قسم کی تعریف بنا.
اگر آپ پھنس جاتے ہیں. . . "وغیرہ، وغیرہ، وغیرہ. ٹھیک ہے.
تو boilerplate یہاں ڈال
typedef struct نوڈ، اور نوڈ. جی ہاں، ٹھیک ہے.
تو شعبوں ہم ہمارے نوڈ میں کرنا چاہتے ہیں جا رہے ہیں ہے؟
[Student کی] اور تو Int دو اشارہ ہے؟
>> Int قیمت دو اشارہ؟ میں اشارہ کس طرح لکھ سکتا ہوں؟
[Student کی] Struct. >> میں اندر زوم جی ہاں، تو struct نوڈ کو چھوڑ *
اور struct نوڈ درست *.
اور آخری وقت سے بحث یاد
یہ ہے کہ یہ کوئی احساس نہیں کرتا ہے، کوئی احساس نہیں کرتا ہے،
کیا یہ کوئی احساس نہیں کرتا ہے.
تم ہر چیز کی ضرورت ہے میں اس پنراورتی struct کی وضاحت کرنے کے لئے.
ٹھیک ہے، تاکہ ہمارے پیڑ کی طرح دیکھنے کے لئے کی جا رہی ہے.
اگر ہم نے ایک trinary درخت کیا، ایک نوڈ B1، B2، struct نوڈ B3 * کی طرح تو نظر ہو سکتا ہے،
جہاں ب ایک شاخ ہے - اصل میں، میں زیادہ سنا نے اسے چھوڑ دیا، مشرق، صحیح، لیکن جو کچھ بھی ہے.
ہم صرف بائنری کے بارے میں پرواہ، تو ٹھیک ہے چھوڑ دیا.
"اب درخت کی جڑ کے لئے ایک عالمی نوڈ * متغیر کا اعلان کرتے ہیں."
تو ہم ایسا نہیں کر رہے ہیں.
کے لئے چیزوں کو تھوڑا زیادہ مشکل اور زیادہ عام بنانے کے لئے،
ہم نے ایک عالمی نوڈ متغیر کی ضرورت نہیں کرے گا.
اس کے بجائے، ہم اہم میں اپنے تمام نوڈ چیزوں کا اعلان کریں گے،
اور جو ذیل میں اس کا مطلب ہے، جب ہم چلنا شروع
ہمارے پر مشتمل ہے تقریب اور ہمارے داخل تقریب،
ہمارے پر مشتمل ہے کے بجائے صرف اس عالمی نوڈ متغیر کا استعمال کرتے ہوئے تقریب
ہم اسے ایک دلیل کے طور پر درخت لے جا رہا ہے کہ ہم اس پر کارروائی کرنے سے کرنا چاہتے ہیں کر رہے ہیں.
عالمی متغیر ہو رہی ہے چیزوں کو آسان بنانے کے لئے چاہیے تھا.
ہم چیزوں کو مشکل بنانے کے لئے جا رہے ہیں.
اب ایک منٹ بات اس طرح صرف کرنا،
جہاں اندر کے اہم آپ کو اس کے درخت کو پیدا کرنا چاہتے ہیں، اور یہ کہ آپ کرنا چاہتے ہیں.
اور آپ کی مرکزی تقریب میں اس درخت کو تعمیر کرنے کی کوشش کریں.
>> ٹھیک ہے. تو کیا تم درخت پورے طریقے سے تعمیر ابھی تک بھی نہیں ہے.
لیکن کسی کو کچھ میں اوپر ھیںچو سکتا ہے ہے
ظاہر ہے کہ کس طرح ایک ایسے ایک درخت کی تعمیر شروع کر سکتے ہیں؟
[Student کی] کسی کے پیٹنے، باہر نکلنے کی کوشش کر رہے ہیں.
[Bowden] ان کے درخت کی تعمیر کے ساتھ آرام دہ اور پرسکون کوئی ہے؟
[Student کی] جی ہاں. یہ نہیں کیا ہے. >> یہ ٹھیک ہے. ہم صرف ختم کر سکتے ہیں -
اوہ، تم نے اسے بچا سکتے ہیں؟ ہرے.
لہذا ہم یہاں ہیں - اوہ، میں تھوڑا کاٹ رہا ہوں.
میں یکبر؟
میں زوم، باہر سکرال. >> میں ایک سوال کے جواب میں ہے. >> جی ہاں؟
[Student کی] جب آپ struct وضاحت، کچھ بھی initialized چیزیں ہیں؟
[Bowden] نمبر >> ٹھیک ہے. تو تم ابتدا ہوگا -
، [Bowden] نہیں. جب آپ کی وضاحت، یا آپ جب اعلان struct
یہ ڈیفالٹ کی طرف سے initialized نہیں ہے، یہ صرف اگر آپ کو ایک int اعلان کرنا ہے.
یہ بالکل وہی چیز ہے. یہ اس کی انفرادی شعبوں میں سے ہر ایک کی طرح ہے
اس میں ردی کی ٹوکری کی قدر کر سکتے ہیں. >> اور کیا یہ ممکن ہے کی وضاحت کرنے - یا اعلان ایک struct
ایک طریقہ ہے کہ اس سے فرق پڑتا ہے میں ان کی ابتدا؟
[Bowden] جی ہاں. تو، شارٹ کٹ ابتدا نحو
کی طرح نظر آنا جا -
دو طریقے ہیں کیا ہم یہ کر سکتے ہیں ہے. مجھے لگتا ہے کہ ہم اس کی تیاری کرنی چاہئے
اس بات کا یقین بجنا بھی کرتا ہے.
دلائل کے حکم جو struct میں آتا ہے،
آپ ان گھوبگھرالی منحنی خطوط وحدانی کے اندر دلائل کے حکم کے طور پر رکھ دیا.
تو اگر آپ اس 9 ابتدا کرنا چاہتا ہوں، اور چھوڑ دیا تو ٹھیک ہے، شہوت انگیز null شہوت انگیز null رکھا جائے اور
یہ 9، شہوت انگیز null گے، شہوت انگیز null.
متبادل ہے، اور ایڈیٹر اس نحو کو پسند نہیں کرتا،
اور یہ سوچتا ہے کہ میں ایک نیا بلاک کرنا چاہتے ہیں،
لیکن متبادل کی طرح کچھ ہے -
یہاں میں ایک نئی سطر میں ڈال دیتا ہوں.
آپ کو واضح طور پر کہہ سکتے ہیں، میں عین مطابق نحو بھول جاتے ہیں.
تو آپ نے ان کے نام سے واضح طور پر، پتہ اور کہہ سکتے ہیں،
C، یا قیمت = 9، بائیں =. نل.
میں ان کی علامت کے طور پر کرنے کی ضرورت کا اندازہ کر رہا ہوں.
حق. = نل، تو اس طرح سے تم نہیں
اصل میں struct کے حکم کو جاننے کی ضرورت ہے،
اور جب آپ کو یہ پڑھ رہے ہو، زیادہ واضح ہے
کے بارے میں کیا قدر جا رہا ہے initialized.
>> یہ وہ چیزیں ہیں جو میں سے ایک ہے -
ہاں، تو سب سے زیادہ حصہ کے لئے، C + + سی کے superset ہے
آپ C کوڈ لے کر سکتے ہیں، اسے ختم منتقل C + +، اس کی تیاری اور.
یہ چیزیں ہیں جو C + + کی حمایت نہیں کرتا ہے میں سے ایک ہے، تاکہ لوگوں کو یہ نہیں کرنا ہیں.
میں جانتا ہوں کہ اگر یہ ہی وجہ ہے وہ لوگ ہیں جن سے یہ نہیں کرنا ہیں نہیں،
لیکن اگر جہاں میں اس کو استعمال کرنے کی ضرورت ہے C + + اور اس میں اس کا استعمال نہیں کر سکتے ہیں کے ساتھ مل کر کام کرنے کی ضرورت ہے.
ایسی چیز ہے جس کی ایک مثال C + ہے + کے ساتھ کام نہیں کرتا
malloc ایک "باطل *،" کس طرح واپس تکنیکی،
لیکن آپ کو حروف * X = malloc جو کچھ بھی کہہ سکتے،
اور یہ خود کار طریقے سے ایک چار * ڈال رکھا جائے گا.
یہ خود کار طریقے سے کاسٹ میں نہیں ہوتا ہے C + +.
یہ مرتب نہیں ہے اور آپ کا کہنا ہے کہ واضح طور پر ضرورت ہو گی
چار *، malloc. جو بھی ہو، یہ ایک چار * ڈال
بہت سی چیزیں ہیں کہ C اور C + + پر بھی اختلاف نہیں ہے،
لیکن ان دو ہیں.
تو ہم اس نحو کے ساتھ جائیں گے.
لیکن اگر ہم اس نحو کے ساتھ نہیں گئے تھے،
کیا ہے - اس کے ساتھ غلط ہو سکتا ہے؟
[Student کی] میں یہ dereference کی ضرورت نہیں ہے؟ >> جی ہاں.
یاد رکھیں کہ تیر ایک انترنہیت dereference ہے،
اور اسی طرح جب ہم صرف ایک struct کے ساتھ کام کر رہے ہو،
ہم چاہتے ہیں کہ استعمال کرنے کے لئے. struct کے ایک کھیت کے اندر حاصل کرنے کے لئے.
اور صرف وقت ہے کہ ہم تیر کا استعمال کرتے ہیں جب ہم کرنا چاہتے ہیں -
ٹھیک ہے، تیر کے برابر ہے -
ہے کہ کیا اگر میں تیر کا استعمال کیا ہے مراد گے.
تمام تیر کا مطلب ہے، اس dereference اب میں struct میں ہوں، اور میں میدان حاصل کر سکتے ہیں.
یا تو براہ راست میدان یا dereference اور فیلڈ حاصل -
مجھے لگتا ہے کہ اس قیمت کو ہونا چاہئے.
لیکن میں یہاں صرف ایک struct نے ایک struct پر ایک پوائنٹر کے ساتھ نہیں نمٹنے کر رہا ہوں،
اور اس لئے میں تیر کا استعمال نہیں کر سکتے.
لیکن اس طرح کی چیز کا ہم نے تمام مراکز کے لئے کیا کر سکتے ہیں.
اوہ میرے خدا.
یہ 6، 7، اور 3 ہے.
پھر ہم نے ہمارے پیڑ کی شاخیں مقرر کر سکتے ہیں، ہم نے 7 ہو سکتا ہے -
ہم اس کے بائیں سکتا ہے 3 کی طرف اشارہ ہے.
تو ہم یہ کس طرح کر سکتا ہوں؟
[طالب علم، unintelligible] جی ہاں >>. node3 کا پتہ،
اگر آپ کو پتہ نہیں تھا، تو اس نے نہ صرف مرتب کرے گی.
لیکن یاد رکھنا کہ یہ اگلے نوڈس پر اشارہ ہیں.
حق 9 کی طرف اشارہ چاہئے،
اور 3 6 کا حق پر کی طرف اشارہ کرنا چاہئے.
مجھے لگتا ہے کہ یہ سب سیٹ ہے. کوئی تبصرہ یا سوال؟
[طالب علم، unintelligible] جڑ 7 ہو جا رہا ہے.
ہم صرف نوڈ کا کہنا ہے کہ کر سکتے ہیں * ptr =
یا جڑ =، اور node7.
>> ہمارے مقاصد کے لئے، ہم داخل سے نمٹنے جا رہے ہیں،
تو ہم ایک اس بائنری درخت میں شامل کرنے کے لئے تقریب لکھنے کے لئے کرنا چاہتے ہیں جا رہے ہیں
اور داخل لامحالہ malloc اس پیڑ کے لئے ایک نیا نوڈ بنانے کے لئے پر کال کی جا رہی ہے.
تو یہ حقیقت کے ساتھ چیزوں کو گندا حاصل کرنے کے لئے جا رہے ہیں کہ کچھ نوڈس
اسٹیک پر ہیں
اور دوسرے نوڈس ڈھیر پر جب ہم نے ان سے داخل ختم کی جا رہے ہیں.
یہ بالکل درست ہے، لیکن صرف اس وجہ
ہم اسٹیک پر کرنے کے قابل ہیں
کیونکہ یہ ایک ایسی contrived مثال کے طور پر یہ ہے کہ ہم جانتے ہیں کہ ہے
درخت 7، 3، 6، 9 کے طور پر تعمیر کیا جائے سمجھا جاتا ہے.
اگر ہم یہ نہیں تھا، تو پھر ہم پہلی جگہ میں malloc نہیں کریں گے.
جیسا کہ ہم بعد میں تھوڑا نظر آئے گا، ہم malloc'ing رکھا جائے چاہئے.
ٹھیک ہے اب یہ بالکل مناسب ہے اسٹیک پر ڈال،
لیکن malloc عمل اسے تبدیل کریں.
تو اب ان میں سے ہر ایک جیسے کچھ ہونے جا رہا ہے
نوڈ node9 * = malloc ((نوڈ) sizeof).
اور اب ہم ہماری چیک کرنا پڑے جا رہے ہیں.
اگر (== نل node9) - میں نے یہ نہیں کرنا چاہتے تھے -
1 واپس کریں، اور پھر ہم node9> کیا کر سکتے ہیں کیونکہ اب یہ پوائنٹر ہے،
قیمت = 6، node9> چھوڑ نل =،
node9> صحیح نل =،
اور ہم ہے کہ ان مراکز میں سے ہر ایک کے لئے کیا کرنا ہے کے لئے جا رہے ہیں.
تو بجائے، یہ ایک علیحدہ تقریب کے اندر ڈالو.
چلو یہ نوڈ build_node * کہتے ہیں،
اور یہ کسی حد تک APIs کے ہم Huffman کوڈنگ کے لئے فراہم کرتے ہیں کی طرح ہے.
ہم آپ کو ایک درخت کے لئے آغاز افعال دے
اور deconstructor ان درختوں اور جنگلات کے لئے ایک ہی "افعال".
>> تو یہاں ہم ایک آغاز کی تقریب کے لئے جا رہے ہیں
صرف ہمارے لئے ایک نوڈ کی تعمیر.
اور یہ بالکل اس طرح بہت خوبصورت نظر ہو رہا ہے.
اور میں بھی سست ہو جا رہا ہوں اور متغیر کے نام کو تبدیل نہیں،
اگرچہ node9 اب کوئی احساس نہیں کرتا ہے.
اوہ، میں node9 قیمت لگتا ہے 6 نہیں کرنا چاہیے تھا.
اب ہم node9 واپس آ سکتے ہیں.
اور یہاں ہم شہوت انگیز null واپس آ جانا چاہئے.
ہر کوئی اس تقریب کی تعمیر ایک نوڈ پر اتفاق ہے؟
تو اب ہم صرف یہ ہے کہ دی قدر اور شہوت انگیز null اشارہ کے ساتھ کسی بھی نوڈ کی تعمیر پر کال کر سکتے ہیں.
اب ہم کہہ سکتے ہیں، ہم نوڈ node9 * = build_node (9) کر سکتے ہیں.
اور ہے. . .
6، 3، 7، 6، 3، 7.
اور اب ہم ایک ہی اشارہ قائم کرنے کے لئے کرنا چاہتے ہیں،
اب سوائے سب کچھ پہلے ہی اشارہ کی شرائط میں ہے
تو اب کا ایڈریس کی ضرورت ہے.
ٹھیک ہے. تو جو آخری چیز جو میں کرنا چاہتا ہوں؟
میں ایک خامی چکینگ ہے کہ میں نہیں کر رہا ہوں.
نوڈ واپسی کی تعمیر کرتا ہے؟
[طالب علم، unintelligible] >> جی ہاں. اگر malloc میں ناکام رہے، شہوت انگیز null واپس آ جائیں گے.
تو میں lazily اس نے ہر ایک کے لئے ایک شرط کرنے کے بجائے یہاں ڈال جا رہا ہوں.
اگر (node9 == نل، یا -، بھی آسان
یہ صرف اگر نہیں node9 کے برابر ہے.
تو اگر node9 نہیں، یا نہیں node6، یا نہیں node3، یا نہیں node7 واپس 1.
ہم شاید پرنٹ malloc میں ناکام رہے، یا کچھ اور کرنا چاہئے.
[Student کی] جھوٹی برابر ساتھ ساتھ، شہوت انگیز null ہے؟
[Bowden] کوئی صفر قدر غلط ہے.
تو، شہوت انگیز null صفر قدر ہے.
صفر صفر قدر ہے. جھوٹی صفر قدر ہے.
بہت زیادہ صرف 2 صفر اقدار شہوت انگیز null صفر ہیں - کوئی
جھوٹے صرف ہیش صفر کے طور پر بیان کیا ہے.
یہ بھی لاگو ہوتا ہے اگر ہم عالمی متغیر کا اعلان کرتے ہیں.
اگر ہم یہاں نوڈ * جڑ ہے،
تو - عالمی متغیر کے بارے میں اچھی بات یہ ہے کہ وہ ہمیشہ ایک ابتدائی قیمت ہے.
وہ سچ کے افعال میں سے نہیں ہے، یہاں کے اندر کس طرح
اگر ہم، طرح، نوڈ * یا نوڈ ایکس.
ہم نے کوئی اندازہ نہیں کیا x.value، x.whatever ہے،
یا ہم نے انہیں پرنٹ اور وہ من مانی ہو سکتا ہے کر سکتے ہیں.
یہ عالمی متغیرات میں سے درست نہیں ہے.
تو نوڈ جڑ یا نوڈ ایکس.
ڈیفالٹ کی طرف سے، سب کچھ ہے کہ عالمی، اگر نہیں، تو واضح طور پر کسی قیمت initialized
اس کی قیمت کے طور پر ایک صفر کی قیمت ہے.
تو یہاں نوڈ * جڑ، ہم اسے واضح طور پر کچھ بھی نہیں ابتدا،
تو اس کا بنیادی قدر خالی ہو جائے، جو اشارہ کی صفر قدر ہے.
X کے پہلے سے طے شدہ کی قیمت کا مطلب یہ ہے کہ x.value صفر ہے جا رہا ہے،
x.left شہوت انگیز null ہے، اور x.right شہوت انگیز null ہے.
تو کیونکہ یہ ایک struct ہے، تمام struct کے شعبوں صفر اقدار جائے گا.
ہم یہاں اس کا استعمال کرنے کی ضرورت نہیں ہے، تاہم.
[Student کی] structs دوسرے متغیر سے مختلف ہیں، اور متغیر ہیں
ردی کی ٹوکری میں اقدار، ان zeros ہیں؟
[Bowden] دیگر اقدار بھی. تو، X X میں صفر ہو جائے گا.
اگر یہ عالمی دائرہ کار میں ہے، یہ ایک ابتدائی قدر ہے. ٹھیک ہے. >>
[Bowden] یا تو ابتدائی قیمت ہے آپ اسے یا صفر دیا ہے.
مجھے لگتا ہے کہ یہ اس کی سب کا خیال رکھتی ہے.
>> ٹھیک ہے. اسی طرح سوال کے اگلے حصے سے پوچھتے ہیں،
انہوں نے کہا کہ اب ہمیں کہا جاتا ہے پر مشتمل ایک تقریب لکھنا چاہتے ہیں
bool کے ایک پروٹوٹائپ کے ساتھ int قیمت پر مشتمل ہے. "
ہم جا bool int قیمت پر مشتمل ہے نہیں کر رہے ہیں.
ہمارے پروٹوٹائپ کی طرح دیکھنے کے لئے کی جا رہی ہے
bool پر مشتمل ہے (int قیمت.
اور پھر ہم بھی اس درخت کے پاس جا رہے ہیں
کہ اگر یہ اس قدر ہے کو دیکھنے کے لئے کی جانچ پڑتال کرنا چاہئے.
تو نوڈ * درخت). ٹھیک ہے.
اور پھر ہم جیسے کچھ کے ساتھ یہ کہہ سکتے ہیں،
شاید ہم printf یا کچھ اور کرنا چاہتے ہیں کریں گے.
6، ہماری جڑ پر مشتمل ہے.
وہ ایک، یا درست واپس آ جانا چاہئے،
جبکہ مشتمل ہے 5 جڑ جھوٹے واپس آ جانا چاہئے.
تو ایک پل کے اس کو لاگو کرنے کے لے.
آپ اسے یا تو iteratively یا تکراری طور پر کر سکتے ہیں.
جس طرح سے ہم باتیں قائم ہے کے بارے میں اچھی بات یہ ہے کہ
وہ خود ہمارے پنراورتی بہت آسان حل فراہم کرتا
سے عالمی متغیر طرح کیا.
کیونکہ اگر ہم صرف int قیمت پر مشتمل ہے، تو ہم نیچے subtrees recursing کا کوئی راستہ نہیں ہے.
ہم نے ایک علیحدہ مددگار تقریب ہے کہ ہمارے لئے subtrees recurses ہوگا.
لیکن چونکہ ہم نے تبدیل کر دیا ہے، یہ ایک دلیل کے طور پر درخت،
جو اس کی ہمیشہ سے پہلی جگہ میں ہونا چاہیے تھا،
اب ہم recurse آسانی سے زیادہ کر سکتے ہیں.
تو تکراری یا پنراورتی، ہم دونوں پر جائیں گے،
لیکن ہم بہت آسان ہونے کے اس پنراورتی ختم دیکھیں گے.
ٹھیک ہے. کیا کسی نے کچھ ہم کے ساتھ مل کر کام کر سکتے ہیں کی ضرورت ہے؟
>> [Student کی] میں نے ایک حل تکراری ہے. >> ٹھیک ہے، تکراری.
ٹھیک ہے، یہ اچھا لگتا ہے.
لہذا، ہمیں اس کے ذریعے چلنے کرنا چاہتے ہیں؟
[Student کی] جی ہاں. تو میں نے ایک عارضی متغیر درخت کا پہلا نوڈ کو حاصل کرنے کے لئے.
اور پھر میں صرف جبکہ TEMP برابر شہوت انگیز null نہیں ہوتا ہے کے ذریعے looped،
جبکہ درخت میں بھی، مجھے لگتا ہے.
اور اگر قیمت کی قیمت کے برابر یہ ہے کہ TEMP اشارہ کر رہا ہے،
تو اس قدر واپس کرتا ہے.
دوسری صورت میں، یہ چیک کرتا ہے اگر یہ دائیں طرف یا بائیں جانب ہے.
اگر تم نے کبھی ایک ایسی صورت حال ہے جہاں کوئی درخت ہے،
تو اس کے فوائد - یہ exits لوپ اور جھوٹے واپس.
[Bowden] ٹھیک ہے. تو یہ اچھا لگتا ہے.
کوئی بھی چیز پر کوئی تبصرہ ہے؟
میں درست میں تمام تبصرے ہے.
ایک چیز جو ہم کر سکتے ہیں اس آدمی ہے.
اوہ، یہ ایک چھوٹا سا longish جا رہا ہے.
میں اس کو ٹھیک کر دونگا. ٹھیک ہے.
>> ہر کسی کو یاد ہے کہ تہرا کام کرنا چاہئے.
ضرور کیا گیا ہے ماضی میں quizzes
ہے جو آپ کو ایک تہرا آپریٹر کے ساتھ ایک تقریب
، اور اس ترجمہ کا کہنا ہے کہ، کچھ کہ تہرا کا استعمال نہیں کرتا.
تو یہ ایک بہت عام کی صورت ہے جب میں تگنا کو استعمال کرنے کے لئے لگتا ہے کہ،
جہاں اگر کوئی شرط کچھ متغیر قائم،
اور کچھ اور ہے کہ ایک ہی متغیر مقرر ہے.
یہ ایک ایسی چیز ہے جس پر اکثر اس طرح کی بات کی میں تبدیل کیا جا سکتا ہے ہے
جہاں یہ کہ متغیر مقرر کریں - یا، ٹھیک ہے، یہ سچ ہے؟ پھر اس کے علاوہ، یہ ہے.
[Student کی] سب سے پہلے میں سے ایک ہے اگر یہ سچ ہے، ٹھیک ہے؟
[Bowden] جی ہاں. جس طرح سے میں نے ہمیشہ اسے پڑھا ہے، TEMP TEMP قیمت سے زیادہ قیمت کے برابر ہے،
تو اس کے علاوہ، یہ. یہ ایک سوال پوچھ رہا ہے.
بڑا ہے؟ پھر پہلے کام کرتے ہیں. پھر دوسری بات کرتے ہیں.
میں تقریبا ہمیشہ ہی - قولون، میں صرف - میرے سر میں، میں اور پڑھیں.
>> کیا کسی کو بھی ایک پنراورتی حل ہے؟
ٹھیک ہے. یہ ایک ہم جا رہے ہیں - یہ بہت پہلے ہی ہو سکتا ہے،
لیکن ہم اسے اور بھی بہتر بنانے کے لئے جا رہے ہیں.
یہ بہت ایک ہی عین مطابق خیال ہے.
یہ صرف ہے، ٹھیک ہے، آپ کو سمجھانے کی چاہتے ہیں؟
[Student کی] جی ہاں. تو ہم اس بات کا یقین کر لیں کہ درخت پہلے، شہوت انگیز null نہیں ہے کر رہے ہیں،
کیونکہ اگر درخت، شہوت انگیز null ہے تو یہ غلط ہے کیونکہ ہم نے اسے نہیں مل سکا ہے واپس جا رہا ہے.
اور اگر اب بھی ایک درخت ہے، ہم میں جانے - ہم سب سے پہلے اگر قدر موجودہ نوڈ ہے چیک کرنے کے لیے ہے.
سچ واپس اگر یہ ہے، اور اگر نہیں، تو ہم بائیں یا دائیں recurse.
وہ آواز کیا مناسب ہے؟ >> مم ہمم. (معاہدہ)
تو دیکھیں گے کہ یہ تقریبا - structurally حل تکراری کی طرح ہے.
یہ صرف ہے کہ recursing کے بجائے، ہم نے تھوڑی دیر لوپ تھا.
اور بیس یہاں صورت میں جہاں درخت برابر شہوت انگیز null نہیں ہوتا ہے
حالت ہے جس کے تحت ہم دیر لوپ سے باہر توڑ دیا تھا.
وہ بہت ہی ہیں. لیکن ہم یہ ایک قدم آگے لے جا رہے ہیں.
اب، یہاں ہم ایک ہی کام کرتے ہیں.
نوٹس ہم ان دونوں لائنوں میں سے میں ایک ہی بات کو واپس لوٹنے کر رہے ہیں،
کے علاوہ ایک دلیل مختلف ہے.
تو ہم ایک تہرا میں کرنے جا رہے ہیں.
میں آپشن کچھ کو مارا، اور یہ ایک علامت ہو گئی ہے. ٹھیک ہے.
تو ہم واپس جا رہے ہیں پر مشتمل ہے.
یہ ایک سے زیادہ لائنوں پر ہو رہی ہے، ہے، ہے یکبر.
عام طور پر، میں ایک stylistic بات کے طور پر بہت سے لوگوں کو لگتا ہے کہ نہیں
تیر کے نشان کے بعد ایک جگہ ڈال دیا ہے، لیکن مجھے لگتا ہے کہ اگر آپ مسلسل ہو، یہ ٹھیک ہے.
اگر قیمت درخت قیمت سے بھی کم وقت ہے، ہم درخت کے بائیں پر recurse چاہتے ہیں،
اور ہم درخت کے حق پر recurse کرنا چاہتے ہیں.
تو وہ یہ دیکھو چھوٹے بنانے کے ایک قدم ہے.
یہ دیکھو چھوٹے بنانے کے دو مرحلہ -
ہم نے ایک سے زیادہ لائنوں پر یہ الگ نہیں کر سکتا.
ٹھیک ہے. یہ چھوٹی نظر آئے دو قدم یہاں ہے،
تو واپسی قیمت درخت کی قیمت کے برابر ہے، یا جو کچھ بھی مشتمل ہے.
>> یہ ایک اہم بات ہے.
مجھے یقین نہیں ہوں اگر انہوں نے کہا کہ یہ کلاس میں واضح طور پر،
لیکن یہ اندازہ شارٹ سرکٹ کہا جاتا ہے.
یہاں خیال کی قدر ہے == درخت قدر.
اگر یہ سچ ہے، تو یہ سچ ہے، اور ہم چاہتے ہیں 'یا' کے ساتھ ہے کہ جو کچھ بھی یہاں ہے.
تو بھی یہاں جو کچھ بھی ہے کے بارے میں سوچ بغیر
پوری واپس اظہار کیا ہے؟
[Student کی] یہ سچ ہے؟ >> جی ہاں، کیونکہ، کچھ کے حقیقی
کچھ کے ساتھ or'd - یا حقیقی or'd ضروری سچ ہے.
تو جیسے ہی ہمیں واپسی قیمت = درخت قیمت دیکھیں،
ہم صرف سچ واپس جا رہے ہیں.
recurse بھی نہیں جا مزید نیچے لائن پر مشتمل ہے.
ہم اس سے ایک قدم مزید لگ سکتے ہیں.
واپس درخت برابر شہوت انگیز null اور اس کے سب نہیں ہے.
یہ ایک ہی لائن میں ایک تقریب کی تھی.
یہ بھی اندازہ شارٹ سرکٹ کی ایک مثال ہے.
لیکن اب یہ ایک ہی خیال ہے -
بجائے اس کے کہ میں سب کچھ - اگر ایسا ہے تو درخت برابر نہیں، شہوت انگیز null کرتا ہے - یا، اچھی طرح
اگر درخت برابر شہوت انگیز null کرتا ہے، جو برا معاملہ ہے،
اگر درخت، شہوت انگیز null برابر ہے، تو پہلی شرط باطل کی جا رہی ہے.
تو کچھ کے ساتھ anded جھوٹے کیا جا رہا ہے؟
[Student کی] جھوٹی. >> جی ہاں. یہ اندازہ شارٹ سرکٹ کے دوسرے نصف ہے،
اگر پیڑ برابر شہوت انگیز null نہیں ہے، تو ہم جا رہے ہیں بھی نہیں جانے کے لئے جہاں -
یا اگر درخت برابر شہوت انگیز null کرتا ہے، تو ہم جا قدر == درخت قدر کرنا نہیں کر رہے ہیں.
ہم صرف فوری طور پر جھوٹ پر واپس جا رہے ہیں.
کون سے اہم ہے، کے بعد اگر اس نے اندازہ شارٹ سرکٹ نہیں،
تو اگر درخت برابر شہوت انگیز null کرتا ہے، یہ دوسری حالت seg غلطی کرنے جا رہا ہے،
کیونکہ درخت> قیمت شہوت انگیز null محولہ لقب ضبطی ہے.
تو یہ ہے. اس کے بنانے کے لئے کر سکتے ہیں - ایک بار سے زیادہ منتقل کریں.
یہ ایک بہت ہی عام بات بھی ہے، اس کے ساتھ اس ایک لائن نہیں بنا،
لیکن اس حالات میں ایک عام بات ہے، شاید نہیں ہے یہاں،
لیکن اگر (درخت نل =، اور درخت> قیمت == قیمت)، جو کچھ بھی کرتے ہیں.
یہ ایک بہت عام شرط ہے، جہاں ہونے کے بجائے
دو اگر میں اس کو توڑنے، جہاں پسند، درخت، شہوت انگیز null ہے؟
ٹھیک ہے، یہ، شہوت انگیز null نہیں ہے، تو اب درخت کی قیمت کے برابر قیمت ہے؟ یہ کرتے ہیں.
اس کے بجائے، اس شرط یہ غلطی seg کبھی نہیں کرے گا
کیونکہ یہ توڑ اگر یہ شہوت انگیز null ہونا ہوتا ہے.
ٹھیک ہے، مجھے لگتا ہے کہ اگر آپ کے درخت میں ایک مکمل طور پر جعلی پوائنٹر ہے، یہ غلطی اب بھی seg کر سکتے ہیں،
لیکن یہ غلطی seg نہیں کر سکتے ہیں اگر درخت، شہوت انگیز null ہے.
اگر یہ شہوت انگیز null تھے، اسے توڑنے سے پہلے تم نے کبھی پہلے پوائنٹر dereferenced.
[Student کی] اس نام نہاد سست اندازہ ہے؟
>> [Bowden] آلسی تشخیص ایک الگ چیز ہے.
آلسی تشخیص طرح آپ کو ایک کی قیمت کے لئے سے دعا گو ہیں،
آپ کو ایک کی قیمت کی قسم کا حساب کرنے کے لئے سے دعا گو ہیں، لیکن آپ کو فوری طور پر اس کی ضرورت نہیں ہے.
تو جب تک آپ واقعی اس کی ضرورت ہے، اس کا اندازہ نہیں ہے.
یہ بالکل نہیں ہے ایک ہی بات، لیکن Huffman pset میں
اس کا کہنا ہے کہ ہے کہ ہم "lazily" لکھنے ہے.
وجہ سے ہم ایسا ہے کیونکہ ہم واقعی لکھنے بفرن کر رہے ہیں -
ہم ایک وقت میں انفرادی بٹس لکھنے نہیں کرنا چاہتے ہیں،
یا ایک وقت میں انفرادی شراکت، ہم بجائے شراکت کا ایک حصہ حاصل کرنے کے لئے کرنا چاہتے ہیں.
پھر ایک بار ہم بائٹس کا ایک حصہ ہے، پھر ہم اسے لکھ لیں گے.
اگرچہ آپ اس سے لکھنے - اور fwrite اور fread بات کی اسی طرح کرتے ہیں.
وہ آپ پڑھتا اور لکھتا بفر.
اگرچہ آپ اس سے فوری طور پر لکھنے کا مطالبہ، شاید یہ نہیں کریں گے.
اور آپ کو اس بات کا یقین کر لیں کہ چیزوں لکھا جا رہا ہے نہیں ہو سکتا
جب تک کہ آپ hfclose کال کریں یا جو کچھ بھی ہے،
جو اس کے بعد کہتے ہیں کہ، ٹھیک ہے، میں نے اپنی فائل بند کر رہا ہوں،
اس کا مطلب ہے کہ میں نے سب کچھ میں لکھا ابھی تک نہیں کیا ہے بہتر لکھنا چاہتے ہیں.
یہ کوئی سب کچھ لکھنے کی ضرورت ہے
جب تک کہ آپ فائل کو بند کر رہے ہیں، اور اس کے بعد کی ضرورت ہے.
تو وہ صرف سست کیا ہے - اس کا انتظار کر رہی ہے جب تک کہ وہ ہوتا ہے.
یہ - 51 لے لو اور اس میں آپ کو مزید تفصیل میں جائیں گے،
کیونکہ 51 میں OCaml اور سب کچھ، سب کچھ تکرار ہے.
ہیں کوئی حل تکراری، بنیادی طور پر.
سب کچھ تکرار، اور سست اندازہ ہے
حالات کی ایک بہت کے لئے اہم ہے
، اگر آپ lazily اندازہ نہیں تھا جہاں اس کا یہ مطلب گے -
مثال کے طور پر اسٹریمز میں، جس میں infinitely طویل ہے.
اصول میں، آپ 1-2-3-4-5-6-7 کی ایک ندی کے طور پر قدرتی تعداد کے بارے میں سوچ کر سکتے ہیں،
تو lazily کا اندازہ چیزوں ٹھیک ہے.
اگر میں کہتا ہوں کہ میں دسویں نمبر کی ضرورت ہے، تو میں دسویں نمبر پر اندازہ کر سکتے ہیں.
اگر میں سووان تعداد چاہتے ہیں، تو میں سووان تعداد کا اندازہ کر سکتے ہیں.
سست اندازہ کے بغیر، اس وقت یہ تمام اعداد و شمار فوری طور پر اندازہ کرنے کی کوشش کی جا رہا ہے.
آپ infinitely کئی تعداد کا تعین کر رہے ہیں، اور یہ کہ ممکن نہیں ہے.
تو وہاں حالات کی ایک بہت ہیں جہاں سست اندازہ
صرف چیزوں کے کام کرنے کے لئے حاصل کرنے کے لئے ضروری ہے.
>> اب ہم داخل کریں جہاں داخل کرنے جا رہا ہے لکھنا چاہتا ہوں
اسی طرح اس کی تعریف میں تبدیل کرنا.
تو اب یہ bool ڈالیں (int قدر) ہے.
ہم bool ڈالیں (int قدر نوڈ * درخت) کہ کپڑے تبدیل کرنے جا رہے ہیں.
ہم اصل میں ایک سا ہے کہ میں دوبارہ تبدیل کرنے جا رہے ہیں، ہم دیکھتے ہیں، ہوں کیوں.
اور صرف اس کا heck کے لئے لشکر build_node منتقل،
اوپر ڈال تاکہ ہم ایک تقریب پروٹوٹائپ لکھنے کی ضرورت نہیں ہے.
جو ایک اشارہ ہے کہ آپ داخل میں build_node کا استعمال کرتے ہوئے جا رہے ہیں.
ٹھیک ہے. اس کے لئے ایک منٹ لے لو.
مجھے لگتا ہے کہ میں نظرثانی بچایا اگر آپ کو اس سے ھیںچو کرنا چاہتے ہیں،
یا کم از کم، اب میں کیا.
میں داخل کی منطق کے بارے میں سوچنے کے لئے تھوڑا سا بریک کی ضرورت تھی،
اگر آپ کو اس کے بارے میں سوچ بھی نہیں کر سکتے.
بنیادی طور پر، کیا تم نے کبھی صرف پتے میں داخل رکھا جائے گا.
کی طرح، اگر میں 1 داخل، تو میں لامحالہ 1 داخل کرنے جا رہا ہوں -
میں سیاہ تبدیل کر دیں گے - I'll یہاں 1 داخل رکھا جائے.
یا اگر میں 4 داخل، میں یہاں 4 سے داخل ہونا چاہتا ہے.
کوئی تو بات جو تم کرتے ہو، آپ کو پتی میں داخل کرنے جا رہے ہیں.
تمہیں صرف اتنا کرنا ہے کہ نیچے درخت iterate جب تک کہ آپ نوڈ حاصل کرنے کے لئے
جو نوڈ کے والدین، نئی نوڈ والدین ہونا چاہئے،
اور پھر اس کے بائیں یا دائیں پوائنٹر تبدیل، چاہے پر منحصر ہے
یا اس سے زیادہ موجودہ نوڈ سے کم ہے.
کہ پوائنٹر اپنے نئے نوڈ کی طرف اشارہ کرنے کے لئے تبدیل کریں.
تو نیچے درخت iterate، نیا نوڈ پتی نقطہ.
اس کے علاوہ اس سے پہلے صورت حال کی قسم منع کے بارے میں سوچنا،
میں بائنری درخت کہاں تعمیر جہاں یہ درست تھا
اگر آپ کو صرف کسی ایک نوڈ کو دیکھا،
لیکن 9 7 بائیں تھا، اگر آپ نے پورے راستے iterated.
تو ہے کہ اس صورت حال میں ناممکن ہے کے بعد -
بہت پہلے نوڈ میں؛ خیال کے بارے میں 9 یا کچھ داخل
میں 7 کو دیکھنے کے لئے اور میں صرف اس کو درست کرنے کے لئے جا رہا ہوں میں جا رہا ہوں.
تو بات ہے جو میں کرتا ہوں، اگر میں پتی میں جانے کی طرف سے داخل کر رہا ہوں،
اور مناسب الگورتھم کو استعمال کرتے ہوئے ایک پتی
میرے لئے 7 بائیں 9 داخل کرنے کے لئے یہ ناممکن ہو رہا ہے
کیونکہ جیسے ہی میں 7 مارا میں کو درست کرنے کے لئے جا رہا ہوں.
کیا کسی کے ساتھ شروع کرنے کے لئے کچھ ہے؟
[Student کی] میں کرتے ہیں. >> ضرور.
[طالب علم، unintelligible]
[دیگر طالب علم، unintelligible]
[Bowden] یہ تعریف کی ہے. ٹھیک ہے. کی وضاحت کرنا چاہتے ہیں؟
>> [Student کی] چونکہ ہم جانتے ہیں کہ ہم داخل کر رہے تھے
درخت کے آخر میں نئے مراکز،
میں نے درخت کے ذریعے iteratively looped
جب تک میں ایک نوڈ جو اتارنا null نشاندہی کی ہے.
اور پھر میں اس کے دائیں طرف یا بائیں جانب یا تو ڈال کا فیصلہ کیا
اس حق کو متغیر کا استعمال کرتے ہوئے، یہ مجھ سے کہا کہ جہاں رکھ.
اور پھر، بنیادی طور پر، میں صرف نے گزشتہ کہ -
ہے کہ TEMP نوڈ نئے نوڈ ہے کہ اسے پیدا کیا گیا تھا کی طرف اشارہ،
کیا قدر صحیح تھی یا تو بائیں جانب یا دائیں جانب، پر منحصر ہے.
آخر میں، میں نے نئی نوڈ کو اس کی جانچ کی قدر قیمت کا تعین.
[Bowden] ٹھیک ہے، تو میں ایک مسئلہ یہاں ملاحظہ کریں.
یہ وہاں راستے سے 95 فی صد کی طرح ہے.
ایک مسئلہ ہے کہ میں دیکھ رہا ہوں، اچھی طرح سے، کسی اور ایک مسئلہ ہے؟
حالات جس کے تحت وہ لوپ سے باہر ٹوٹ جاتا ہے؟
[] Student کی اگر TEMP شہوت انگیز null ہے؟ >> جی ہاں. تو کس طرح آپ کو لوپ سے باہر ٹوٹ جاتا ہے اگر TEMP شہوت انگیز null ہے.
لیکن کیا میں یہاں کیا کرتے ہیں؟
میں dereference TEMP، جو لامحالہ اتارنا null ہے.
تو دوسری بات ہے آپ کیا کرنے کی ضرورت ہے نہ صرف ٹریک تک TEMP رکھنے شہوت انگیز null ہے،
آپ کو ہر وقت والدین کی ٹریک رکھنا چاہتے ہیں.
ہم نے بھی نوڈ * والدین چاہتے ہیں، مجھے لگتا ہے کہ ہم شہوت انگیز null میں پہلے میں رکھ سکتے ہیں.
یہ درخت کی جڑ کے لئے عجیب رویے والا ہے،
لیکن ہم اس سے ملے گی.
اگر قیمت جو کچھ بھی اس سے بڑا ہے، تو TEMP = TEMP حق ہے.
لیکن اس سے پہلے کہ ہم ایسا کرتے ہیں کہ، = TEMP والدین.
یا والدین ہمیشہ برابر TEMP جا رہے ہو؟ یہ معاملہ ہے؟
اگر TEMP شہوت انگیز null نہیں ہے، تو میں نیچے منتقل کرنے کے لئے، کوئی بات نہیں کیا جا رہا ہوں،
نوڈ جس کے لئے TEMP والدین ہے.
تو والدین TEMP ہونا ہے، اور پھر میں TEMP منتقل نیچے.
اب TEMP شہوت انگیز null ہے، لیکن بات یہ ہے کہ، شہوت انگیز null ہے کے والدین والدین پوائنٹس.
تو یہاں نیچے، میں ٹھیک 1 برابر نہیں چاہتا ہے.
لہذا میں نے کا حق منتقل کر دیا گیا، اگر ایسا ہے تو صحیح = 1،
اور مجھے لگتا ہے آپ کو بھی کرنا چاہتا ہوں -
اگر آپ کو بائیں طرف منتقل، آپ کو درست 0 کے برابر مقرر کرنا چاہتے ہیں.
ورنہ اگر تم نے کبھی حق میں منتقل.
تو دائیں = 0. صحیح = 1 اگر
اب ہم والدین صحیح پوائنٹر newnode بنانے کے لئے چاہتے ہیں،
اور ہم والدین بائیں پوائنٹر newnode بنانے کے لئے چاہتے ہیں.
اس پر سوال؟
ٹھیک ہے. تو یہ طریقہ ہے جس سے ہم ہے - ٹھیک ہے، اصل میں، ایسا کرنے کی بجائے
ہم آدھے آپ کو build_node استعمال کرنے کے لئے کی امید ہے.
اور پھر اگر newnode شہوت انگیز null برابر، جھوٹے واپس.
یہ ہے وہ ہے. اب، یہ ہے جو ہم نے تم سے کیا امید کی جاتی ہے.
>> اس کا ہے عملے حل کیا کرتے ہیں.
میں نے اس کے بارے میں جانے کی "صحیح" کے طریقے کے طور پر اس کے ساتھ متفق نہیں
لیکن یہ بالکل ٹھیک ہے اور یہ کام کریں گے.
ایک بات یہ ہے کہ ایک چھوٹا سا عجیب ابھی ہے ہے
اگر درخت، شہوت انگیز null کے طور پر دور شروع ہوتا ہے ہم شہوت انگیز null درخت میں گزرے.
مجھے لگتا ہے اس پر منحصر ہے کہ آپ کس طرح شہوت انگیز null درخت میں گزرنے والے کے رویے کی وضاحت.
مجھے لگتا ہے کہ اگر آپ شہوت انگیز null درخت میں گزرتا ہے،
پھر شہوت انگیز null درخت میں قدر داخل
ایک درخت واپس جہاں صرف قدر ہے کہ ایک نوڈ ہے.
لوگ اس کے ساتھ اتفاق کرتا ہوں کیا؟ تم اگر تم چاہتے تھے، کر سکتے ہیں،
اگر آپ شہوت انگیز null درخت میں گزر
اور آپ اس میں ایک قدر داخل کرنا چاہتے ہیں، جھوٹے واپس.
یہ آپ پر منحصر ہے کہ وضاحت کرنے.
پہلی بات میں اور اس کے بعد انہوں نے کہا کہ ایسا کرنے -
ٹھیک ہے، تم مصیبت یہ ہے کہ ایسا ہو رہا ہے، کر رہے ہیں کیونکہ
آسان ہو گا اگر ہم ایک عالمی چیز پوائنٹر تھا،
لیکن ہم ایسا نہیں کرتے ہیں اگر درخت، شہوت انگیز null ہے، وہاں کچھ نہیں ہے کہ ہم اس کے بارے میں کیا کر سکتے ہیں ہے.
ہم جھوٹے واپس آ سکتے ہیں.
اس لئے میں داخل کو تبدیل کرنے جا رہا ہوں.
ہم تکنیکی طور پر یہ حق صرف یہاں تبدیل کر سکتا ہے،
یہ چیز پر کس طرح iterating ہے،
لیکن میں داخل ایک نوڈ *** درخت پر لینے تبدیل کرنے جا رہا ہوں.
ڈبل اشارہ.
اس کا کیا مطلب ہے؟
نوڈس پر اشارہ سے نمٹنے کے بجائے،
بات میں توڑ کے لئے جا رہا ہوں یہ پوائنٹر ہے.
میں اس پوائنٹر توڑ پر جا رہا ہوں.
میں اشارہ توڑ براہ راست جا رہا ہوں.
یہ سمجھ میں آتا ہے کے بعد، نیچے کے بارے میں سوچنا -
ٹھیک ہے، یہ پوائنٹس ابھی شہوت انگیز null.
میں کیا کرنا چاہتی ہوں یہ پوائنٹر نہیں شہوت انگیز null کی طرف اشارہ کرنے کے لئے جوڑتوڑ.
میں میرا نیا نوڈ کی طرف اشارہ کرنا چاہتے ہیں.
اگر میں اشارہ ٹریک میرا اشارہ رکھنے،
تو میں والدین پوائنٹر کے ٹریک رکھنے کے لئے کی ضرورت نہیں ہے.
میں ٹریک اگر پوائنٹر شہوت انگیز null اشارہ کر رہا ہے دیکھنے کے لئے رکھ سکتے ہیں،
اگر پوائنٹر اشارہ کر رہا ہے لوڈ، اتارنا null اور
نوڈ میں چاہتا ہوں کی طرف اشارہ کرنے کے لیے تبدیل کر دیں.
اور کیونکہ میں پوائنٹر میں ایک پوائنٹر ہے میں اسے تبدیل کر سکتے ہیں.
یہ حق اب دیکھ دو.
تم نے یہ اصل میں تکراری طور پر بہت آسانی سے کر سکتے ہیں.
کیا ہم ایسا کرنے کے لئے کرنا چاہتے ہیں؟
جی ہاں، ہم کرتے ہیں.
>> تکراری طور پر دیکھ.
سب سے پہلے، کیا ہماری بنیاد کیس ہونے جا رہا ہے؟
تقریبا ہمیشہ ہماری بنیاد کیس، لیکن اصل میں، یہ مشکل کی طرح ہے.
پہلی چیزیں، اگر (درخت نل ==)
مجھے لگتا ہے کہ ہم صرف جھوٹی واپس جا رہے ہیں.
یہ آپ کے درخت شہوت انگیز null سے مختلف ہے.
یہ اپنے جڑ پوائنٹر شہوت انگیز null ہونے کے پوائنٹر ہے
جس کا مطلب یہ ہے کہ آپ کی جڑ پوائنٹر کا کوئی وجود نہیں ہے.
یہاں تو نیچے، اگر میں نے ایسا کرتے ہیں
نوڈ * - ہم صرف اس کے دوبارہ استعمال.
گھنڈی * جڑ نل =،
اور پھر میں جیسے کچھ کرنے کی طرف سے شامل کرنے کے لئے فون کرنے جا رہا ہوں،
جڑ اور عمومی میں 4 ڈالیں.
تو اور عمومی جڑ، اگر جڑ ایک نوڈ * ہے
پھر جڑ اور عمومی نوڈ ** جا رہا ہے.
یہ درست ہے. اس صورت میں، درخت، یہاں،
یا داخل - درخت، شہوت انگیز null نہیں ہے.
یہاں. درخت، شہوت انگیز null نہیں ہے، * درخت خالی ہے، جو کہ ٹھیک ہے
کیونکہ اگر * درخت خالی ہے، تو میں اسے توڑ کر سکتے ہیں
اب کیا میں اس کی طرف اشارہ کرنے کے لئے کرنا چاہتے ہیں کی طرف اشارہ ہے.
لیکن اگر درخت، شہوت انگیز null ہے، اس کا مطلب ہے کہ میں صرف اتر آیا یہاں اور شہوت انگیز null نے کہا کہ.
اس کا کوئی مطلب نہیں ہے. میں اس کے ساتھ کچھ نہیں کر سکتے.
اگر درخت، شہوت انگیز null ہے، جھوٹے واپس.
تو میں بنیادی طور پر پہلے ہی نے کہا کہ ہماری حقیقی بنیاد معاملہ ہے.
اور اس کا کیا ہونے جا رہا ہے؟
[طالب علم، unintelligible]
[Bowden] جی ہاں. لہذا اگر (* درخت == نل).
یہ یہاں کیس سے متعلق
اگر میرا لال پوائنٹر پوائنٹر ہے میں کہاں پر توجہ مرکوز کر رہا ہوں،
طرح میں اس پوائنٹر پر توجہ مرکوز کر رہا ہوں، اب میں اس پوائنٹر پر توجہ مرکوز کر رہا ہوں.
اب میں اس پوائنٹر پر توجہ مرکوز کر رہا ہوں.
اگر ایسا ہے تو میرا لال پوائنٹر، جو اپنے نوڈ **
کبھی - * اگر، میرا لال پوائنٹر، کبھی، شہوت انگیز null ہے،
اس کا مطلب یہ ہے کہ میں کیس جہاں میں پوائنٹر کہ پوائنٹس پر توجہ مرکوز کر رہا ہوں میں ہوں -
یہ پوائنٹر اس پتی سے تعلق رکھتا ہے ہے.
میں اس پوائنٹر میرا نیا نوڈ کی طرف اشارہ کرنے کے لئے تبدیل کرنا چاہتے ہیں.
یہاں واپس آ جاؤ.
میرا newnode نوڈ * N = build_node (قیمت) ہو جائے گا
تو ن = نل اگر (ن)، جھوٹے واپس.
نہیں تو ہم کو تبدیل کرنا چاہتے ہیں اس وقت کیا پوائنٹر اشارہ کر رہا ہے
اب ہمارے نئے تعمیر نوڈ کی طرف اشارہ ہے.
ہم یہاں کہ اصل میں کیا کر سکتے ہیں.
N کہنے کے بجائے، ہم کا کہنا ہے کہ درخت * = * درخت اگر.
ہر کوئی یہ سمجھ میں آیا؟ یہ اشارہ پر اشارہ سے نمٹنے کی طرف سے
ہم شہوت انگیز null اشارہ کو تبدیل چیزیں ہم نے ان کی طرف اشارہ کرنے کے لئے کرنا چاہتے ہیں کی طرف اشارہ کر سکتے ہیں.
یہ ہماری بنیاد بات ہے.
>> اب ہماری تکرار، یا ہماری تکرار،
دیگر تمام recursions ہم کر رہے رہے ہیں کی طرح ہو جائے گا.
ہم قیمت کو شامل کرنے کے لئے چاہتے ہیں کے لئے جا رہے ہیں،
اور اب میں تگنا دوبارہ استعمال کرنے کی جا رہی ہوں، لیکن ہماری حالت کیا جا رہا ہے؟
کیا ہم فیصلہ کریں گے کہ ہم بائیں یا دائیں جانا چاہتے ہیں کے لئے تلاش کر رہے ہیں؟
چلو مختلف مراحل میں ہیں.
اگر (قیمت <) کیا ہے؟
[Student کی] درخت قیمت ہے؟
[Bowden] تو یاد رکھو کہ میں فی الحال ہوں -
[طالب علم، unintelligible]
[Bowden] جی ہاں، یہیں ہم، کا کہنا ہے کہ کہ یہ سبز تیر
فی الحال جو درخت ہے اس کی ایک مثال ہے، اس پوائنٹر میں ایک پوائنٹر ہے.
تو اس کا مطلب ہے کہ میں 3 پوائنٹر پوائنٹر ہوں.
dereference دو بار اچھی لگ رہی تھی.
مجھے کیا - کیا کہ میں کس طرح ایسا ہے؟
[Student کی] ایک بار Dereference، اور پھر جس طرح کہ تیر کر؟
تو [Bowden] (* درخت) dereference ایک بار ہے، - قیمت>
کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے نوڈ کہ میں بلاواسطہ طور پر کی طرف اشارہ کرتے ہوئے رہا ہوں قیمت دینے جا رہا ہے.
تو میں بھی اس tree.value ** لکھ سکتے ہیں اگر آپ نے اس کو ترجیح دیتے ہیں.
یا تو کام کرتا ہے.
اگر یہ معاملہ ہے، تو میں قیمت کے ساتھ داخل سے بات کرنا چاہتے ہیں.
اور کیا میرے کو اپ ڈیٹ نوڈ *** کرنے کے لئے جا رہی ہے؟
میں بائیں طرف جانے کے لئے کرنا چاہتے ہیں، اس لئے *** tree.left میرے بائیں ہونے جا رہا ہے.
اور میں اس چیز پر پوائنٹر چاہتے ہیں
تو ہے کہ اگر بائیں ختم شہوت انگیز null پوائنٹر ہونے،
میں اسے نظر ثانی میرا نیا نوڈ کی طرف اشارہ کر سکتے ہیں.
>> اور دوسرا معاملہ بہت ہی ہو سکتا ہے.
میں اصل میں میرے تہرا کہ ابھی بنا ہوں.
قدر قیمت اگر قدر <(** درخت). ڈالیں.
پھر ہم بائیں ہمارے ** اپ ڈیٹ کرنا چاہتے ہیں،
اور ہم حق پر اپنے ** اپ ڈیٹ کرنا چاہتے ہیں.
[Student کی] کہ پوائنٹر پوائنٹر کیا ملے گا؟
[Bowden] یاد رکھیں کہ - *** tree.right ایک نوڈ ستارہ ہے.
[طالب علم، unintelligible] >> جی ہاں.
*** tree.right اس پوائنٹر یا کچھ اور کی طرح ہے.
تو اس پوائنٹر لے کر، کہ آپ کے وزٹرز کا ریکارڈ رکھا دیتا ہے جو میں چاہتا ہوں
اس آدمی پوائنٹر.
[Student کی] سے زیادہ ہم پھر کیوں ہم دو اشارہ کا استعمال کرتے ہوئے کر رہے ہیں کر سکتا ہوں؟
[Bowden] جی ہاں. تو - نہیں، تم، اس کا حل اور اس سے پہلے کر سکتے ہیں
دو اشارہ کر کے بغیر کرنے کے ایک طریقہ تھا.
آپ کو دو اشارہ کا استعمال کرتے ہوئے کو سمجھنے کے قابل ہو جائے کرنے کی ضرورت ہے،
اور یہ ایک صاف حل ہے.
بھی نوٹس، کہ کیا ہوتا ہے اگر میری درخت -
اگر میری جڑ خالی تھا کیا ہوتا ہے؟ اگر میں اس کیس یہیں کرتے ہیں تو کیا ہوتا ہے؟
تو نوڈ جڑ * = جڑ اور عمومی میں نل، 4 ڈالیں.
جڑ اس کے بعد کیا ہونے جا رہا ہے؟
[طالب علم، unintelligible] >> جی ہاں.
روٹ قیمت 4 بننے جا رہا ہے.
روٹ بائیں خالی ہونے جا رہا ہے، جڑ حق خالی ہونے جا رہا ہے.
صورت میں ہم ایڈریس کے ذریعے جہاں جڑ پاس نہیں کیا،
ہم جڑ میں ترمیم نہیں کر سکتا.
صورت میں جہاں درخت - جہاں جڑ شہوت انگیز null تھا،
ہم صرف جھوٹے لوٹنا پڑا. ہم کچھ نہیں کر سکتی ہے ہے.
ہم ایک خالی درخت میں ایک نوڈ نہیں ڈال سکتے.
لیکن اب ہم ایسا کر سکتے ہیں، ہم صرف ایک نوڈ ایک درخت میں ایک خالی درخت.
جو عام طور پر متوقع طریقہ ہے کہ یہ کام کرنا ہے ہے.
>> مزید برآں، یہ نمایاں طور سے کم ہے
بھی والدین کا ٹریک رکھنے، اور آپ ہر طرح iterate.
اب میں اپنے والدین کی ہے، اور میں صرف اپنے والدین کا حق جو پوائنٹر ہے.
اس کی بجائے اگر ہم اس iteratively کیا، یہ تھوڑی دیر لوپ کے ساتھ ایک ہی خیال تھا.
لیکن، میرے والدین پوائنٹر کے ساتھ نمٹنے کے کرنے کے لئے کرنے کے بجائے،
بجائے اپنے موجودہ پوائنٹر بات ہو گی
کہ میں براہ راست میرا نیا نوڈ کی طرف اشارہ کرنے کے لئے میں ترمیم کر رہا ہوں.
میں چاہے وہ بائیں کی طرف اشارہ کرتے ہوئے ہے کے ساتھ نمٹنے کے لئے کی ضرورت نہیں ہے.
میں چاہے وہ حق کی طرف اشارہ کرتے ہوئے ہے کے ساتھ نمٹنے کے لئے کی ضرورت نہیں ہے.
یہ صرف ہے جو کچھ بھی اس پوائنٹر میں ہے یہ میرا نیا نوڈ کی طرف اشارہ قائم کرنے جا رہا ہے.
ہر کوئی سمجھ کہ یہ کس طرح کام کرتا ہے؟
اگر نہیں، تو ہم اسے کیوں اس طرح کرنا چاہتے ہیں،
ہے لیکن کم از کم ایک حل کے طور پر یہ کام؟
[Student کی] ہم سچ کہاں لوٹا سکتا ہوں؟
[Bowden] یہ شاید ٹھیک یہاں.
اگر ہم درست طریقے سے داخل، درست واپس.
دوسری صورت میں، یہاں ذیل ہم جو بھی داخل کی واپسی کو واپس کرنا چاہتے ہیں جا رہے ہیں.
>> اور اس پنراورتی تقریب کے بارے میں کیا خاص بات ہے؟
یہ پنراورتی دم ہے، تو جب تک ہم کچھ اصلاح کے ساتھ مرتب،
ہے کہ یہ تسلیم کرتے ہیں اور آپ کو اس سے اسٹیک اتپرواہ کبھی نہیں ملے گا،
بھی اگر ہمارے درخت کی اونچائی 10،000 یا 10 ملین ہے.
[طالب علم، unintelligible]
[Bowden] مجھے لگتا ہے کہ یہ ڈیش میں ہے - یا اصلاح کی سطح
دم کو تسلیم کیا جائے تکرار کے لئے ضروری ہے.
میرے خیال میں یہ تسلیم کرتی ہے - جی سی سی اور بجنا
نے ان کی اصلاح کی سطح کے لئے مختلف معانی ہے.
میں کہتا ہوں کہ یہ اس بات کا یقین کر لیں کہ یہ پونچھ کے تکرار کو تسلیم کریں گے کے لئے 2 DashO ہے، کرنا چاہتے ہیں.
لیکن ہم - Fibonocci مثال کے طور پر یا کچھ اور کی طرح آپ کو تعمیر کر سکتے ہیں.
یہ بہت آسان ہے اس کے ساتھ ٹیسٹ نہیں ہے، کیونکہ اس کی تعمیر مشکل ہے
ایک بائنری درخت ہے جو اتنا بڑا ہے.
لیکن ہاں، مجھے لگتا ہے کہ یہ 2 DashO،
اگر آپ کو 2 DashO کے ساتھ مرتب، اس کے دم کی تکرار کے لئے نظر آئے گا
اور آپٹمائز کہ باہر.
چلو واپس جانا - داخل لفظی آخری چیز کو اس کی ضرورت ہے.
چلو یہاں پر شامل کرنے کے لئے واپس جانے
جہاں ہم ایک ہی خیال کرنے کے لئے جا رہے ہیں.
یہ مکمل طور پر سنبھالنے کے قابل نہیں دوش اب بھی پڑے گا
جڑ خود خالی کب ہوتی ہے، یا گزشتہ انٹری خالی ہے،
بلکہ اس کی بجائے والدین پوائنٹر کے ساتھ نمٹنے کے،
ہم اشارہ رکھنے اشارہ کے اسی منطق کا اطلاق.
یہاں اگر ہم اپنے نوڈ رائج *** رکھنے،
اور ہم کا ٹریک رکھنے کے لئے کی ضرورت نہیں ہے اب،
لیکن نوڈ رائج *** = درخت اور
اور اب ہمارے جبکہ لوپ جبکہ * رائج برابر شہوت انگیز null نہیں ہوتا ہے جا رہا ہے.
والدین کے ٹریک اور زیادہ رکھنے کی ضرورت نہیں ہے.
بائیں اور دائیں ٹریک رکھنے کے لئے کی ضرورت نہیں ہے.
اور میں نے اسے TEMP فون، کیونکہ ہم نے پہلے سے ہی TEMP کا استعمال کرتے ہوئے کر رہے ہیں کریں گے.
ٹھیک ہے. اگر ایسا ہے تو (قیمت> TEMP *)
تو (* TEMP) - حق>
اور TEMP = & (* TEMP) - چھوڑ>.
اور اب، اس وقت، اس دیر لوپ کے بعد
میں صرف ایسا کرتے ہیں کیونکہ شاید یہ آسان ہے کے بارے میں iteratively تکراری طور سے لگتا ہے،
لیکن اس دیر لوپ کے بعد،
* TEMP پوائنٹر ہم کو تبدیل کرنا چاہتے ہیں.
>> اس سے پہلے کہ ہم والدین تھا، اور ہم نے یا تو والدین کے بائیں یا والدین کا حق کو تبدیل کرنا چاہتے تھے،
لیکن اگر ہم والدین کا حق کو تبدیل کرنا چاہتے ہیں،
تو * TEMP والدین کا حق ہے، اور ہم اسے تبدیل براہ راست کر سکتے ہیں.
یہاں تو نیچے، ہم * TEMP = newnode، اور یہ کہ یہ کر سکتے ہیں.
نوٹس تو ہم سب اس میں کیا کوڈ کی لائنیں لگ گیا تھا.
کرنے کے لئے سب کے میں والدین جو اضافی کوشش کی جا رہی ہے کا ٹریک رکھنے کے لئے.
یہاں، اگر ہم صرف پوائنٹر پوائنٹر کے ٹریک کو برقرار رکھنے،
اور یہاں تک کہ اگر ہم اب ان تمام گھوبگھرالی منحنی خطوط وحدانی سے چھٹکارا حاصل کرنے کے لئے کرنا چاہتا تھا،
اسے چھوٹا نظر.
یہ اب بالکل وہی حل ہے،
لیکن کوڈ کے کم لائنوں.
ایک بار جب آپ ایک درست حل کے طور پر اس کو تسلیم شروع،
یہ بھی طرح سے کے بارے میں کی وجہ سے آسان ہے، ٹھیک ہے،
میں int حق میں اس پرچم کیوں ہے؟
اس کا کیا مطلب ہے؟ اوہ، یہ signifying ہے کہ
ہر بار میں ٹھیک جاؤ، میں اسے قائم کرنے کی ضرورت ہے،
اور اگر میں جانا چھوڑ دیا تو میں اسے صفر پر قائم کرنے کی ضرورت ہے.
یہاں، میں اس بارے میں وجہ نہیں ہے، یہ صرف آسان ہے کے بارے میں سوچنا.
سوال؟
[طالب علم، unintelligible] >> جی ہاں.
ٹھیک ہے، تو گزشتہ سا -
مجھے لگتا ہے کہ ایک فوری اور آسان تقریب میں ہم کیا کر سکتے ہیں ہے،
let's - ایک ساتھ مل کر، مجھے لگتا ہے، اور لکھنے کی کوشش کرو ایک تقریب پر مشتمل ہے
جو کوئی پرواہ نہیں ہے چاہے وہ ایک بائنری تلاش درخت ہے.
پر مشتمل تقریب صحیح واپس آ جانا چاہئے
اگر اس عام بائنری درخت میں کہیں بھی قیمت ہے ہم کے لئے تلاش کر رہے ہیں ہے.
تو سب سے پہلے یہ تکراری طور پر کرتے ہیں اور پھر ہم ایسا iteratively گے.
ہم صرف اصل میں ایک دوسرے کے ساتھ ایسا کرتے ہیں، کر سکتے ہیں کیونکہ یہ بہت مختصر ہو جا رہا ہے.
>> میری بنیاد کیس کیا ہے کیا جا رہا ہے؟
[طالب علم، unintelligible]
[Bowden] تو اگر (درخت نل ==)، تو کیا؟
[Student کی] جھوٹی واپس.
[Bowden] ورنہ، ٹھیک ہے، میں کسی اور کی ضرورت نہیں ہے.
اگر میری دوسری بنیاد کیس تھا.
[Student کی] درخت کی قیمت؟ >> جی ہاں.
تو اگر (درخت> قیمت == قدر.
نوٹس ہم نوڈ * واپس آ گئے ہیں، نہیں نوڈ کے ***؟
پر مشتمل ہے نوڈ ** استعمال کرنے کی ضرورت کبھی نہیں ہو گا،
چونکہ ہم اشارہ میں ترمیم نہیں کر رہے ہیں.
ہم تو صرف ان کے traversing کر رہے ہیں.
اگر ایسا ہوتا ہے، تو ہمیں صحیح واپس کرنا چاہتے ہیں.
ورنہ ہم بچوں گزرنا کرنا چاہتے ہیں.
تو ہم کہ سب کچھ بائیں کم ہے کے بارے میں بات نہیں کر سکتے
اور حق کو سب کچھ بڑا ہے.
تو ہماری حالت کیا یہاں کی جا رہی ہے - یا ہم کیا کرنے جا رہے ہو؟
[طالب علم، unintelligible] >> جی ہاں.
واپس پر مشتمل ہے (قیمت، درخت> بائیں)
پر مشتمل ہے یا (قیمت، درخت> دائیں). اور یہ کہ یہ ہے.
نوٹس اور کچھ اندازہ شارٹ سرکٹ ہے،
اگر ہم بائیں درخت میں قدر کو تلاش کرنے کے لئے ہو، جہاں
ہم صحیح درخت کو دیکھنے کے لئے نہیں کی ضرورت ہے.
وہ پورے تقریب ہے.
اب یہ iteratively دیتے،
جس میں کم اچھا ہونے جا رہا ہے.
ہم نوڈ * رائج = درخت کے معمول شروع کریں گے.
جبکہ (رائج = نل!).
جلدی سے ایک مسئلہ کو دیکھنے کے لئے جا رہے ہیں.
اگر رائج - یہاں سے باہر، اگر ہم نے کبھی بھی اس کی توڑ
تو پھر ہم چیزوں سے باہر چلانے کے لئے ہے کو دیکھنے کے لئے، تو جھوٹے واپس.
اگر (رائج> قیمت == قیمت)، صحیح واپس.
تو اب، ہم نے ایک جگہ میں ہیں -
ہم نہیں جانتے کہ ہم بائیں یا دائیں جانا چاہتی ہے.
تو منمانے، صرف چھوڑ جانا.
میں واضح طور پر ایک مسئلہ ہے جہاں میں پوری طرح سب کچھ ضائع دیا ہے میں چلائے گئے -
میں نے کبھی صرف ایک درخت کے بائیں جانب چیک کرنے کے لیے کریں گے.
میں کچھ بھی ہے کہ کچھ کا حق بچے چیک کرنے کے لیے کبھی نہیں کریں گے.
میں اس کو کس طرح ٹھیک کروں؟
[Student کی] آپ کو ایک اسٹیک میں بائیں اور دائیں یاد رکھنا ہے.
[Bowden] جی ہاں. تو اسے
struct فہرست، نوڈ (ن) *، اور پھر نوڈ اگلے ***؟
مجھے لگتا ہے کہ یہ ٹھیک کام کرتا ہے.
یہاں - ہم، بائیں یا let's پر جانا چاہتا ہوں.
Struct فہرست فہرست = شروع کریں گے،
باہر اس struct فہرست پر.
فہرست * =، اتارنا null. تو یہ ہمارے منسلک کی فہرست میں ہونے جا رہا ہے
subtrees کہ ہم ختم چھوڑا ہے.
اب ہم چھوڑ گزرنا جا رہے ہیں،
لیکن چونکہ ہم ناگزیر حق واپس آنے کی ضرورت ہے،
ہم دائیں جانب ہماری struct کی فہرست کے اندر رکھنے کے لئے جا رہے ہیں.
پھر ہم new_list یا struct پڑے گا،
struct فہرست *، new_list = malloc (sizeof (فہرست)).
مجھے نظر انداز ہے کہ غلطی چیک کرنے جا رہا ہوں، لیکن آپ کو اگر یہ شہوت انگیز null چیک کرنے کے لیے کیا جانا چاہئے.
New_list نوڈ سے اس کی طرف اشارہ کرنے جا رہا ہے -
اوہ، یہی وجہ ہے کہ میں نے اسے چاہتے تھے یہاں. یہ ایک دوسرے struct کی فہرست کی طرف اشارہ ہو رہا ہے.
اس کا صرف فہرستوں کا کام کس طرح منسلک ہے.
یہ ایک int منسلک فہرست کے طور پر ایک ہی ہے
کے علاوہ ہم صرف نوڈ کے ساتھ * کی علامت int تبدیل کر رہے ہیں.
یہ بالکل ویسا ہی ہے.
تو new_list، ہمارے new_list نوڈ کی قدر،
رائج> ٹھیک ہو جائے گا جا رہا ہے.
ہماری قدر new_list اگلا> ہمارے اصل کی فہرست میں ہونے جا رہا ہے
اور اس کے بعد ہم نے اپنی فہرست new_list کی طرف اشارہ کرنے کے لئے اپ ڈیٹ جا رہے ہیں.
>> اب ہم ھیںچ چیزوں کے راستے سے کسی قسم کی ضرورت ہے،
جیسا کہ ہم نے پورے بائیں subtree طے ہے.
اب ہم اس کا سامان سے نکالنے کی ضرورت ہے،
رائج طرح خالی ہے، ہم صرف جھوٹے پر واپس نہیں کرنا چاہتے ہیں.
اب ہم ہماری نئی فہرست میں باہر ھیںچو کرنا چاہتے ہیں.
ایسا کرنے کا ایک آسان طریقہ - ٹھیک ہے، اصل میں، وہاں ایسا کرنے کے کئی طریقے ہیں.
کوئی بھی ایک تجویز ہے؟
میں اس میں یہ کیسے کرنا چاہیے کہاں سے کرنا چاہیے؟
ہم صرف ایک جوڑے منٹ ہیں، لیکن کوئی رائے ہوں؟
بجائے - ایک طریقہ کی بجائے ہماری حالت، جبکہ ہونے کے
جو ہم فی الحال دیکھ رہے ہیں، شہوت انگیز null نہیں ہے،
اس کے بجائے ہم جانا جب تک ہماری فہرست میں ہی خالی ہے جاری رکھنے کے لئے جا رہے ہیں.
تو اگر ہماری فہرست میں ختم ہو جاتی ہے، شہوت انگیز null ہونے کے
تو پھر ہم چیزوں سے باہر چلانے کے لئے تلاش کرنے کے لئے، اور تلاش کریں.
لیکن اس کا مطلب یہ ہے کہ ہماری فہرست میں سب سے پہلی چیز پہلے نوڈ کو ہونے جا رہا ہے.
پہلی بات ہو جائے گا - اب ہم یہ دیکھنے کے لئے کی ضرورت ہے.
تو فہرست ہے> n ہمارے درخت ہو جائے گا.
فہرست> اگلے شہوت انگیز null جا رہا ہے.
اور اب جبکہ فہرست برابر شہوت انگیز null نہیں کرتا ہے.
رائج ہماری فہرست میں سے کچھ ھیںچ کی جا رہی ہے.
تو رائج برابر فہرست ہے> n جا رہا ہے.
اور پھر فہرست برابر فہرست ہے> n جا ہے، یا فہرست> اگلے
لہذا اگر رائج قیمت قیمت کے برابر ہے.
اب ہم دونوں اپنے حق پوائنٹر اور ہمارے بائیں پوائنٹر کو شامل کر سکتے ہیں
جب تک کے طور پر وہ، شہوت انگیز null نہیں ہو.
یہاں نیچے، مجھے لگتا ہے کہ ہم کیا کرنا چاہیے پہلی جگہ میں.
اگر (رائج> حق نل! =)
اس کے بعد ہم کہ ہماری فہرست میں نوڈ ڈالنے جا رہے ہیں.
اگر (رائج> بائیں)، یہ اضافی کام کے تھوڑا سا ہے، لیکن یہ ٹھیک ہے.
اگر (رائج> بائیں نل! =)
اور ہم ہمارے منسلک کی فہرست میں بائیں داخل کرنے جا رہے ہیں،
اور یہ کہ اسے ہونا چاہئے.
جب تک ہم ہماری فہرست میں کچھ ہے - ہم iterate
ہم ایک دوسرے کی طرف دیکھنے کی نوڈ ہے.
تو ہم نے اس نوڈ پر نظر،
ہم اگلی بار ہماری فہرست کو آگے بڑھانے.
اگر وہ نوڈ قدر ہم کے لئے تلاش کر رہے ہیں ہے، ہم سچ واپس آ سکتے ہیں.
ورنہ دونوں ہمارے بائیں اور دائیں subtrees داخل،
جب تک وہ شہوت انگیز null نہیں ہیں، ہماری فہرست میں
تاکہ ہم ان پر لامحالہ.
تو اگر وہ شہوت انگیز null نہیں تھے،
اگر ہمارے جڑ پوائنٹر دو چیزوں کی طرف اشارہ کیا،
تو پھر ہم پہلے کچھ باہر نکال لیا تاکہ ہماری فہرست میں ختم ہو جاتی ہے، شہوت انگیز null ہونے کے.
اور پھر ہم دو چیزوں کی پیٹھ میں ڈالا، لہذا اب ہماری فہرست 2 سائز کی ہے.
پھر ہم لوپ بیک اپ جا رہے ہیں اور ہم صرف ھیںچو جا رہے ہیں،
، ہماری جڑ نوڈ کے بائیں پوائنٹر کہہ دو.
ہم نے سب کچھ ختم looping ہوں گے، اور یہ ہو رہا صرف کرتے رہیں گے.
>> یاد رکھیں کہ یہ زیادہ نمایاں طور پر پیچیدہ تھا
پنراورتی حل میں.
اور میں نے کئی بار کہا ہے
کہ پنراورتی حل عام طور پر مشترک حل تکراری کے ساتھ زیادہ ہے.
یہ بالکل وہی جو پنراورتی حل کر رہی ہے.
صرف تبدیلی ہے کہ لپیٹ اسٹیک کا استعمال کرتے ہوئے کی بجائے، پروگرام اسٹیک
آپ کیا نوڈس کا دورہ کرنے کی ضرورت ہے کا ٹریک رکھنے کے طریقے کے طور پر،
اب آپ کو واضح طور پر ایک لنک کی فہرست کرنے کے لئے استعمال ہے.
دونوں صورتوں میں آپ کو ٹریک رکھنے کا کیا نوڈ اب بھی دورہ کیا کرنے کی ضرورت ہے کر رہے ہیں.
پنراورتی معاملے میں یہ صرف آسان ہے کیونکہ ایک اسٹیک
پروگرام اسٹیک کے طور پر آپ کے لئے لاگو کیا ہے.
نوٹس ہے کہ اس سے تعلق رکھنے والے کی فہرست، ایک اسٹیک ہے.
جو کچھ بھی ہم صرف اسٹیک پر ڈال
فوری طور پر ہے جو ہم نے اسٹیک ھیںچو اگلے کا دورہ کرنے جا رہے ہیں.
ہم وقت سے باہر ہو گیا، لیکن اس کے ذہن میں کوئی سوالات ہیں؟
[طالب علم، unintelligible]
[Bowden] جی ہاں. تو اگر ہم اپنے سے منسلک فہرست ہے،
موجودہ اس آدمی کی طرف اشارہ کی جا رہی ہے،
اور اب ہم صرف ہمارے منسلک کی فہرست میں پیش قدمی کر رہے ہیں اس آدمی پر توجہ مرکوز کرنا.
ہم اس لائن میں منسلک فہرست پر traversing کر رہے ہیں.
اور اس کے بعد مجھے لگتا ہے کہ ہم اپنے منسلک فہرست اور سامان آزاد چاہئے
صحیح یا غلط واپس لوٹنے سے پہلے ایک بار، ہم کرنے کی ضرورت ہے
ہمارے منسلک کی فہرست پر iterate اور یہاں ہمیشہ نیچے، مجھے لگتا ہے،
اگر ہم رائج کو درست کرنے کے برابر نہیں ہے، اس کا اضافہ، تو اب ہم آزاد کرنا چاہتے ہیں
، اچھی طرح رائج کیونکہ ہم فہرست کے بارے میں مکمل طور پر بھول گئے؟ جی ہاں.
تو وہ ہے جو ہم یہاں کرنا چاہتے ہیں.
پوائنٹر کہاں ہے؟
رائج تھی تو - ہم ایک struct کی فہرست 10 * فہرست اگلے برابر کرنا چاہتے ہیں.
ڈاؤن لوڈ، اتارنا کی فہرست، فہرست = TEMP.
اور کیس میں جہاں ہم سچ واپس، ہم iterate کی ضرورت ہے
ہمارے منسلک چیزوں آزاد کی فہرست کے باقی پر.
پنراورتی حل کے بارے میں اچھی بات چیزوں آزاد کر رہا ہے
صرف اسٹیک جو آپ کے لئے ہو گا بند پوپ آؤٹ factorings کا مطلب ہے.
تو ہم کچھ کوڈ مشکل کے بارے میں خیال ہے کہ 3 لائنیں کی طرح ہے سے چلے گئے
کچھ جو نمایاں طور پر بہت زیادہ ہے مشکل کے بارے میں کو لگتا ہے کوڈ کی لائنیں.
مزید کوئی سوال؟
ٹھیک ہے. ہم اچھے ہیں. الوداع!
[CS50.TV]