 بسم اللہ الرحمن الرحیم آج ہم موڈیول سیونٹی دسکس کریں گے موڈیول سیونٹی ہے ایک اس کے اندرہ میں ایک بائنڈری ٹری بنایں گے using heaps اور ملٹپل heaps کو ہم استعمال کریں گے اس اگزمپل کے اندر ہم نے کیا کیا ہے کہ ہم نے اس کو اس طرح سے فورملیٹ کیا ہے کہ ہم نے دو heaps رکھیا ہے ایک heap کا نام ہم نے رکھا ہے data heap اور ایک heap کا نام ہم نے رکھا ہے node heap تو ایک فایل میں سے ہم data لیں گے اور اس data کو read کرتے جائیں گے جون جو read کرتے جائیں گے اس data کو ہم data heap کے اندر بھی place کرتے جائیں گے اور اس data کے اندر جو key پڑی بھی ہے اس key کی مدد سے ہم ایک tree construct کرتے جائیں گے اور وہ جو tree construct ہوگا وہ node heap کے اندر ہوگا جو tree construct ہوگا اس کی مدد سے ہمیں کیا سانی ہوگی کہ ہم اس tree کو traverse کر کے اس data کو ہم ایسیلی sort بھی کر سکتے ہیں اور اس data کو ہم اس کے اندر سرچنگ بھی کر سکتے ہیں اور جبکہ سارا data جو ہے وہ لگ سے ایک heap کے اندر store ہوگا اور ہماری جو tree ہے وہ ایک optimal طریق سے ایک faster طریق سے دوسر heap کے اندر پڑا ہوگا جس کی مدد سے ہم sorting اور searching perform کر سکتے ہیں اس پرگرام کے لیے ہم نے کہی کسی رکرسی functions use کیا ہم یہ ازیم کریں کہ binary tree کیوپر آپ نے پہلے کام کیا ہوگا binary tree کی اندر جتنے بھی اس کے functions ہیں اس کو display کرنے کے allocations کرنے کے ان کو رکرسیلی بنایا جا سکتا تو ہم نے رکای جن کا اس کے اندر کافی اسمال کیا اور اس کی مدد سے اس tree کو construct کیا آئے اس کی code دیکھتے اور tree کیا دوسرہ ایک اور point آپ کو پڑھونا چاہیے کہ tree جو ہے وہ lexically build ہوتا کہ ایک node جو ہوتی ہے ہم decided کرتے ہیں lexically کہ اس نے left پہ جانا ہے یا right پہ جانا ہے اور left right پہ اس طرح جا جا کے رکرسیلی ہم decided کرتے ہیں کہ اس کی کیا specific location ہے اور اس location تک اس کو پنچاتے ہیں اور پنچانے کے بعد یہ decision ہوتا یہ lexically ہوتا اور یہ decision لینے کے لیے ہم اپنا operation ہے اپنا method ہے وہ recursively لکھ سکتے tree کے اندر ہم صرف کی انٹریز رکھیں گے جبکہ باکی سارہ جو record ہے وہ آپ کے علاق سے records کے لئے پڑھا سکتا وہ ایک علاق ڈیٹا رکھا جا سکتا اور جتنی بھی tree کے اندر انٹریز ہیں ان کو ہم easily کیونکہ tree ہے اور bind research tree ہے تو اس کے اندر easy لی ہم ان کو sort کر سکتے ہیں search کر سکتے ہیں اس کی code دیکھتے ہیں یہاں پہ ہم نے ایک structure define کیا ہوا tree node tree node کے اندر آپ دیکھ سکتے ہیں یہ ایک left point ہے ایک right point ہے جو اسی طرح کی structure کو point کر رہا اور ایک key ہے اور آپ کا data ہے اور اس طرح کہ ہم نے ایک tree node اور ایک long pointer to tree node ایک long pointer pointer to tree node ہم نے aب Taliban لی ہے tree کو traverse کرنے کے لئے اس کے لغا اور دوسرہ ہم نے یہاں پہ فلیکزوگرہ define کیا نورد ہیب سائیز جوہاں وہ 8000 ہم نے define کیا ہیب کا جو اینیشل سائیز ہم رکھنا چاہے ہیں اور ڈیٹا ہیب کا جو اینیشل سائیز یہ وہ بھی 8000 ہم نے یہاں پہ دفعین کیا ہے اور اور بھی دوسرے ہمیں یہاں پہ ہمیں یہاں پر کانسٹرنٹس دفائن کیا ہے ان کو آپ آگے چلکے دیکھ سکتے ہیں مین بگرام کو دیکھتے ہیں مین بگرام کے اندر سب سے پہلے کیا کیا جاتا ہے اس کو جو بھی فائل نیم یا option جو ہمارے کمارڈ لائن پیرامیٹرز ہیں ان کو پارس کرے گا اور جو آپ کے پاس فائل آئی ہے فائل نیم آیا اس فائل نیم کو یہاں پر ہم چیک کریں وہ ویزج اس کی جو ہے وہ ویلڈ ہے اگر ویلڈ ہے اس کی اس میں ہم کیا کریں گے کہ فائل کو ہم اپن کر لیں گے create فائل سے ہم اس فائل کو اپن کر لیں اور generic read اور یہ ہمیں مل گیا hn یہ ہمارا فائل ہنڈل ہے یہ فائل ہنڈل ہے اس فائل ہنڈل سے ہم اپنے دیٹا کو read کریں گے یہاں پر ہماری فائل اپن ہوگی اب یہ دیکھیں try کا یہاں پر clause ہے یہ exceptions کو حنڈل کرنے کے لئے اگر کسی کسم کی exception آ جاتی ہے تو ہمارے دوسر clause کے اندر چلا جائے گا except کے clause کے اندر پھر یہاں پر ہم ایک ہیب کریئٹ کر رہے اور اس کا جو ہنڈل ہے اس کا نام رکھا ہے hn اور ایک اور ہیب کریئٹ کر رہے اس کا نام ہے hdata ایک یہ والی ہماری nodes کو سٹور کرنے کے لئے اور یہ ہمارے records کو سٹور کرنے کے لئے ہیب ہم منا رہے پھر prute یہ مرہ variable of fill tree ایک اور آگے function جو ہمارے خود سے ڈفائن کیا ہے اس کو تین parameters pass ہو رہے ایک file ڈوسرہ node اور تیسرہ ڈیٹا جو ہماری node ہیب ہے اور ڈیٹا ہیب ہے ان دونوں کے ڈانڈلز اور ہماری file کا ڈانڈل pass کیا اور in the end scan کا یہ function یہاں پر call ہو رہا ہے اب ان دونوں function کو ہمیں دیکھنے کی ضرورت ہے fill tree کے اندر کیا ہو رہا ہے اور scan کے function کے اندر کیا ہو رہا ہے finally clause کے اندر وہ ہم نے ساری exception ہیلنگ کیا ہے اور جو finally execute ہوگا جو ہم نے h node کیلئے allocations کی تھی ڈیٹا کیلئے کی تھی وہ ساری deal locate وہ ہیب destroy ہو رہی ہے اور جو اس کے لوہ garbage collection کی operation جو وہ سارے reform ہو رہے ان case of accept یہ دیکھ رہا ہے کس وجہ سے exception آئیئے اس کے according ڈیٹا ہی user کو message generate ہو جائے گا اب ہم آتے ہم نے fill tree کے function کیا ہو رہا ہے fill tree کا function کیا کرہا ہے یہاں پی نوڈ کے لئے یہیب میں سے memory allocate کر رہا ہے جو اس نے h node میں سے memory allocate کیا اور وہ اس کو پی نوڈ کے اندر store کر لگا اب آپ کے پاس پی نوڈ ہے point it to the node ہے اس کا دیتا ہے اس کو آپ نے initially null set کیا پھر آپ نے left کو اور right دونوں کو اس نے initially null set کر دیا پھر file کو read کیا اور file میں سے جو بھی value read ہوگی وہ key کے اندر چلی جائے گی اور اس کے بعد یہ یہاں پہ اس function کے اندر جو یہ صرف جو white spaces ہے white spaces ہے یہاں پہ LF اور CR ان دونوں کو وہ search کرا اور جب تک LF CR نہیں آتے یہاں سے loop کرتا رہا ہے اس کا مطلب ہے کہ وہ line کے end تک پہن جائے گا line کے end تک پہنے کے بعد again پھر سے next iteration start ہوگی ہر iteration میں کیا کر ہے ایک line read کر رہا ہے اور وہ line جو وہ key کے اندر جائے گی پھر next iteration میں ایک اور line read کرے گا اور وہ line key کے اندر جائے گی and so on ہر iteration پر ایک ایک line وہ file میں سے read کرتا چاہے گا دوسری جو آپ کے پاس ہیپ ہے that is hdata hdata کی لیے آپ memory allocation کر پے اور جو بھی address ہے اس کو آپ پی string کے اندر پلس کر دیتے ہیں اور اس کے پر یہ کی ہے جو بھی آپ نے line read کیا وہ copy کر دیتے ہیں کہنے کے جو file میں سے line read ہی ہے وہ اس دیتا والی ہیپ کے اندر as it is copy ہو جائے گی پھر ہمارا یہاں پہ ایک insert tree کا function ہے اس انسرٹ tree کا function ہے اس کے اندر کیا ہورا ہے کہ ہماری node ہے جو آپ نے ابھی تک node construct کری ہے پی بیس لی یہاں پہ node آپ نے construct کیا یہاں پہ پی node کو پہلے null سے initialized کیا تھا پھر اس کو read کر کے اس کے اندر آپ دیتا لیکے گے node construct ہی ہے وہ node جو ہے آپ tree کے اندر insert کرنا جا رہے یہ tree کا root address ہے insert tree کا function دیکھیں insert tree کا function سبھی یہاں کام کر رہا ہے کہ یہ compared کر رہا ہے اسی طرح سے لیکزیکلی جو ایک سیکلی کمپیر کرتا ہے لیف پہ جانا ہے ریٹ پہ جانا ہے ڈیسائٹ کرتا ہے اور ڈیمیٹلی جانکیں بھی اس کی پوزیشن بلتی ہے وہاں پہ وہ ڈیمیٹلی جاکے اس کو انسرٹ کرتے گا نوڈ کو انسرٹ کرتے گا نوڈ اس نے already بنالی ہوئی ہے اور آگے یہ کی کمپیر کا فنکشن ڈیوز کر رہا ہے کی کمپیر کا بھی فنکشن جو ہے وہ سبلی دو کی ویلیو اس کو آپس میں کمپیر کرے گا اور چیک کرے گا جو بھی ویلیو ہے جو بھی ویلیو ہے وہ آپ کو ڈیمیٹلی کرتے گا اور ڈیوز کی فنکشن جو ہے یہ بھی رکستلی آپ کے ٹری کو ٹریورز کر رہا ہے انوڈر ٹریورسل پرپرشاہرہا ہے انوڈر ٹریورسل کرے گا انوڈر جب ٹریورسل کریں گے تو اف کورس جو اس کے اندے پڑھاوہ دیٹ ہے وہ ساٹرٹ اوڈر کے انداد سپلی ہوگا تو واپس در مین پغرام کے اندر آتے تو فل ٹری کے اندر کیا کیا کیا گیا تھا فل ٹری نے ایک تو دیتا اس دیتا ہیب کے اندر پلس کر دیا تھا اور نورڈ جو تھی اس کو ٹری کے اندر انسرٹ کر دیا تھا جو اماری پی روٹ ہے اس کو الوکیشن اماری نورڈ والی جو ہیب ہے اس میں سے ہوئی ہے یہاں پر آپ دیکھ سکتے ہیں پی نورڈ کو جو الوکیشن ہے اماری نورڈ والی ہیب میں سے ہوئی ہے تو اس میں یہ پتہ چل رہا ہے کہ جون جون ماری بیسکلی دو ہیبس انسرٹ ہو رہی ہے ایک نورڈ ہیب ہے اور ایک اماری دیتا ہیب ہے جو ہی فائل میں سے فائل ہے اس کے لئے کچھ دیتا پڑا ہوا جو یہ دیتا ریڈость ہوتا ہے اس سے ایک نورڈ منتی ہے جو نورڈ ہے وہ لگز ایک سیٹ دیرائی ہے کیا کہ نورڈ ہیب کے اندر ایک ٹری کو اصلابطہ ہوں کہ کعاپ پی جاتا ہے تیلیسن دیتا ہوں اور ایک اندر کو اصلابطہ ہوتا ہے اور اس کے کاندر تھی جو ہوا ہے یہ دیتا ہیب اور کا رفرنس جو وہ دیتا ہیب کا نورڈ ہیب کے اندر ہوتا ہے جس طرح سے آپ کا دیتہ بھی کنسٹرک تو رہا ہے، دیتہ بھی سٹور ہوتا جا رہا ہے اور ساتھ ہی ساتھ ٹری بھی کنسٹرک تو رہا ہے یہ ٹری بھی ساتھ ساتھ پوپلیٹ ہوتا جائے گا جون جو لائنز آڈ ہوتی جائیں گے اور اس ٹری کی مدل سے آپ کو کیا فیضہ ہورا ہے کہ اس ٹری کے اوپر آپ نے وہ سکان کا function in the end بنائے گا وہ سکان کا function جب بھی آپ کال کریں گے تو ٹری جو ہے وہ in order traversal جیترین بھی اس کے کانٹرنز ہیں وہ sorted order کے اندر display ہوتے جائیں گے