[Powered by Google Translate] [অনুচ্ছেদ 7: আরো আরামদায়ক]
[Rob Bowden] [হার্ভার্ড বিশ্ববিদ্যালয়]
[এটি CS50] [CS50.TV]
ঠিক আছে. তাই আমার মত আমি ইমেলে বলেন,
এই ট্রি একটি বাইনারি--নিবিড় অধ্যায় হতে চলেছে.
কিন্তু যে অনেক প্রশ্নই নেই.
তাই আমরা চেষ্টা এবং প্রতিটি প্রশ্নের আঁকা আউট চলুন
সমস্ত জিনিসগুলি সর্বোত্তম উপায়ে বেদনাদায়ক বিস্তারিত মধ্যে এবং যান.
সুতরাং অধিকার শুরুতে, আমরা বাইনারি গাছ এবং পণ্যদ্রব্য নমুনা অঙ্কন দিয়ে যান.
তাই এখানে, "মনে রাখবেন যে, একটি বাইনারি গাছ নোড অনুরূপ একটি লিঙ্ক তালিকায় যারা আছে,
বাম 'শিশু' জন্য এক: পরিবর্তে এক পয়েন্টার ছাড়া দুটি আছে
এবং একটি অধিকার 'শিশু' জন্য. "
সুতরাং একটি বাইনারি গাছ শুধু একটি তালিকা সংযুক্ত ভালো হয়,
struct ছাড়া দুটি পয়েন্টার আছে যাচ্ছে.
Trinary গাছ, যার তিনটি পয়েন্টার পাবেন আছে,
n-Ary গাছ, যা শুধু একটি জেনেরিক পয়েন্টার আছে
যে তাহলে malloc যাও পর্যাপ্ত স্থান আছে আছে
সম্ভাব্য সব বাচ্চাদের যথেষ্ট পয়েন্টার দেয়া হল.
সুতরাং বাইনারি গাছ শুধু একটি দুটি ধ্রুব সংখ্যা আছে এরকম.
আপনি যদি চান, আপনি এমন একটি ইউনারী ট্রি হিসাবে যুক্ত তালিকা দিতে পারেন,
কিন্তু আমি যে কেউ কল এটা যে না মনে হয়.
"একটি একটি বাইনারি গাছ নোডের মধ্যে বাক্সে--তীর এবং ডায়াগ্রাম আঁকুন
Nate এর প্রিয় সংখ্যা, 7, যেখানে প্রতিটি সন্তানের নাল পয়েন্টার হয়. ধারণকারী "
সুতরাং রহমান মোড.
>> এটি প্রশংসনীয় সহজবোধ্য হতে যাচ্ছে.
আমরা ঠিক করছি একটি নোড আছে যাচ্ছে, আমি একটি বর্গক্ষেত্র আঁকতে হিসাবে এটা করব.
এবং আমি এখানে মান আঁকা হবে.
তাই মান এখানে যেতে হবে,
এবং তারপর এখানে আমরা নিচে বাম এবং ডান বাম পয়েন্টার ডান পয়েন্টার থাকবে.
এবং এটা খুবই অনেক তাই প্রচল এটি বাম এবং ডান, পয়েন্টার নাম কল.
এই দুটি যাও নাল হতে যাচ্ছে.
এটা ঠিক করা নাল, এবং ঠিক করা হবে যে নাল হবে.
ঠিক আছে. এখানে তাই ব্যাক.
"একটি লিঙ্ক তালিকা দিয়ে, আমরা কেবল একটি পয়েন্টার সঞ্চয় ছিল
যাও তালিকা যাতে পুরো লিঙ্ক তালিকা, বা সম্পূর্ণ তালিকা মনে প্রথম নোডের.
গাছ সঙ্গে একইভাবে, আমরা কেবল একটি পয়েন্টার সঞ্চয় আছে
একটি নোডের মধ্যে অর্ডার পুরো ট্রি মনে.
এই নোডের হয় calle ট্রি 'রুট'.
আগে থেকে আপনার উপর ডায়াগ্রাম তৈরি করুন বা একটি নতুন আঁকা
যেমন যে আপনি এমন একটি বাইনারি ট্রি বাক্সে এবং--তীরচিহ্ন প্রতিকৃতি আছে
সঙ্গে মান 7, বাম তারপর 3,
ডান তারপর 9, এবং তারপর 6 3 অধিকার. "
চলুন যদি আমার মাথা যে সব মনে করতে পারেন দেখুন.
তাই এই আমাদের রুট এখানে আপ হবে.
আমরা কিছু পয়েন্টার কোথাও আছে, যা আমরা রুট ডাকবো করব,
এবং এটি এই লোক এর প্রতি নির্দেশ যাও.
এখন একটি নতুন নোডের জন্য,
না কি আমরা বাম দিকে আছে 3,?
সুতরাং একটি 3 সঙ্গে নতুন নোড, এবং এটি প্রাথমিকভাবে পয়েন্ট নাল.
আমি শুধু এন রেখে দেব
এখন আমরা 7 বাঁদিকে যে যেতে করতে চাই.
তাই আমরা এখন এই লোক নির্দেশ এই পয়েন্টার পরিবর্তন.
এবং আমরা একই কাজ. আমরা এখানে একটি 9 চান
যা প্রথমে ঠিক বলেছেন নাল.
আমরা 9 ​​এই পয়েন্টার, পয়েন্ট পরিবর্তন করতে যাচ্ছেন,
এবং এখন আমরা 3 ডান 6 লাগাতে চান.
সুতরাং যাচ্ছে - একটি 6 করা.
এবং যে তামাশা করা নির্দেশ আছে.
ঠিক আছে. সুতরাং যে সব এটি কি আমাদের জানাবে.
>> এখন আসুন কিছু পরিভাষা পুনরালোচনা.
আমরা ইতিমধ্যে কিভাবে ট্রি রুট হল ট্রির উপরের সবচেয়ে নোড সম্পর্কে বললাম.
এক ধারণকারী 7. গাছ নীচে নোড পাতার বলা হয়.
কোন নোড যা শুধু আছে তার শিশু হিসাবে নাল একটি গাছের পাতা.
সুতরাং এটা সম্ভব, যদি আমাদের বাইনারি গাছ হয় কেবলমাত্র একটি নোড,
যে একটি গাছ একটি গাছের পাতা, এবং যে এটি.
"ট্রি 'উচ্চতা' হল হপস সংখ্যা আপনাকে করতে হবে
উপর থেকে একটি গাছের পাতা যাও. পেতে "
আমরা মধ্যে, একটি দ্বিতীয় পেতে পার্থক্য, করব
মধ্যে সুষম এবং অসম বাইনারি গাছ,
কিন্তু এখন জন্য, এই গাছ সামগ্রিক উচ্চতা
আমি 3, বলতে হবে, যদিও আপনি যদি হপস সংখ্যা গণনা
আপনি অর্ডার 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 থাকতে পারে,
9 7 বাঁদিকে; মান সবটা কোনো ক্রম নেই.
এখন, আমরা আসলে এই না কারণ এটা ক্লান্তিকর এবং অপ্রয়োজনীয় হবে,
কিন্তু "যাও হিসাবে অনেক আদেশ গাছ হিসাবে আপনি মনে করতে পারেন আঁকার চেষ্টা
সংখ্যা 7, 3, 9 ব্যবহার করে, এবং 6.
কতগুলি স্বতন্ত্র ব্যবস্থা আছে? প্রতিটি এক উচ্চতা কি? "
>> আমরা একটি দম্পতি না, কিন্তু মূল ধারণা হয় করব,
এই উপায় একটি বাইনারি গাছ এই মান ধারণকারী অনন্য উপস্থাপনা হয়.
সমস্ত আমরা প্রয়োজন হয় বাইনারি কিছু গাছ রয়েছে যে 7, 3, 6, এবং 9.
অন্য সম্ভাব্য বৈধ এক রুট 3 হবে,
বাম যান এবং এটা 6, বাম যান এবং এটা 7,
বাম যান এবং এটি 9.
যে একটি পুরোপুরি বৈধ বাইনারি অনুসন্ধান বৃক্ষ.
এটা, কারণ এটি শুধুমাত্র একটি লিঙ্ক তালিকা ভালো খুব সহায়ক নয়
এবং এই পয়েন্টার সব ঠিক আছে নাল.
কিন্তু এটা একটা বৈধ গাছ. হাঁ?
[ছাত্র] মান অধিকার বৃহত্তর করা আছে কি না?
অথবা এই -? >> এই অন্যান্য উপায় যেতে আমি বোঝানো.
এর রয়েছে - হাঁ, যে যাক এর সুইচ.
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 এর চেয়ে অনেক বেশী পেতে সক্ষম হবে না.
সুতরাং এটি বৈধ বাইনারি অনুসন্ধান বৃক্ষ নয়.
>> আমার ভাই আসলে একটি সাক্ষাত্কারে প্রশ্ন ছিল
যা ছিল মূলত কিছু যাচাই আপ এই মাত্র, কোড
কিনা একটি গাছ একটি বাইনারি অনুসন্ধান বৃক্ষ,
এবং তাই সর্বপ্রথম যে জিনিসটি সে কি ছিল শুধু দেখুন
যদি বাম এবং ডান সঠিক হয়, এবং তারপর নিচে আছে বারবার.
কিন্তু আপনি ঠিক না যে কি করতে পারেন; আপনি ট্র্যাক রাখা আছে
আসলে যে এখন যে আমি 7 বামে চলে গেছে করেছি,
এই subtree সবকিছুই 7 চেয়ে কম হওয়া আবশ্যক.
সঠিক অ্যালগরিদম ট্র্যাক রাখা প্রয়োজন
সীমার মধ্যে যে সম্ভবত মান হত্তয়া ইন করতে পারেন
আমরা তাদের সব দিয়ে যেতে হবে না.
একটা চমৎকার পুনরাবৃত্তি সম্পর্ক আছে,
যদিও আমরা যারা, আছে বা অর্জিত না আমরা যারা পেতে হবে না,
সংজ্ঞা আসলে কতগুলি আছে.
সুতরাং তাদের মধ্যে 14 আছে.
কিভাবে আপনি এটি কি ধারণা গাণিতিকভাবে মত,
আপনি রুট নোড হতে কোনো একক এক বাছাই করতে পারেন,
এবং তারপরে আমি যদি রুট নোড হতে 7 বাছাই,
তারপর, বলা আছে কিছু সংখ্যা যে আমার বাম নোড করা যেতে পারে,
এবং কিছু সংখ্যা যে আমার ডান নোড হতে পারি,
কিন্তু যদি আমি মোট সংখ্যা তারপর, যে পরিমাণ বাম যেতে পারেন n আছে
1 - প্লাস পরিমাণ যে অধিকার যেতে পারেন n হল.
তাই অবশিষ্ট সংখ্যার, তারা হয় বাম বা ডান যেতে সক্ষম করা আছে.
মনে হচ্ছে কঠিন যে, যদি আমি 3 করান তারপর প্রথম সবকিছু বাম যেতে হয়েছে,
কিন্তু যদি আমি 7 করা, তারপরে কিছু জিনিস বাম যান এবং কিছু জিনিস অধিকার সরাসরি যেতে পারেন.
এবং আমি প্রথম '3 'দ্বারা বোঝানো ডান সবকিছু যেতে পারেন.
এটি সত্যিই, আপনি এটা সম্পর্কে হিসাবে মনে আছে,
কিভাবে অনেক কিছু গাছ পরবর্তী স্তরে যেতে পারেন.
এবং তা আসে আউট হতে 14; অথবা আপনি তাদের সব আহরণ করতে পারে,
এবং তারপর আপনি 14 পাবেন.
>> এখানে ফিরে যাওয়া,
"ক্রমাঙ্কিত বাইনারি বৃক্ষ হল শীতল কারণ আমরা তাদের মাধ্যমে সন্ধান করতে পারেন
একটি সাজানো অ্যারের মধ্যে অনুসন্ধানের অনুরূপ উপায়.
এটা করার জন্য, root-এ এবং আমরা শুরু গাছ নিচে আমাদের উপায় কাজ
প্রতি পাতার, মান আমরা অনুসন্ধান করছেন বিরুদ্ধে প্রতিটি নোডের এর মান যাচাই করছি.
যদি বর্তমান নোড এর মান মান কম আমরা খুঁজছেন,
আপনি যেতে পরবর্তী নোডের এর ডান সন্তান.
অন্যথা, আপনি নোড এর বাম সন্তানের যান.
এক পর্যায়ে, আপনি হয় মান আপনি যা খুঁজছেন তা খুঁজে পাবেন, অথবা আপনি পাবেন একটি নাল মধ্যে চালানো হবে,
মান ইঙ্গিত ট্রির. না "
আমি গাছ আমরা আগে পুনরায় আঁকুন আছে; যে একটি দ্বিতীয় নেব.
কিন্তু আমরা দর্শনার্থ কিনা 6, 10, এবং 1 টি গাছ আছে চাই.
তাই এটি ছিল, 7, 9, 3, 6. ঠিক আছে.
আপনি যে সংখ্যাগুলি পর্যন্ত দেখতে চাই, আমরা 6 সন্ধান করতে চান.
কীভাবে এই অ্যালগরিদম কাজ করে?
ভাল, আমরা আমাদের কিছু গাছ root-র পয়েন্টার আছে.
এবং আমরা ব্যবহার করে root এবং বলে যান হবে, এই মান সমান মূল্য আমরা অনুসন্ধান করছি?
সুতরাং আমরা 6 জন্য, সেইজন্য এটা সমান না করছি.
সুতরাং আমরা রাখা যাচ্ছে, এবং এখন আমরা বলতে, ঠিক আছে, তাই 6 7 কম.
এর অর্থ কি আমরা বাম যেতে চান, অথবা না এ মুহূর্তে আমরা যেতে চান?
[ছাত্র] বাম. >> হ্যাঁ.
এটা উল্লেখযোগ্য ভাবে সহজ, আপনি সব কি এক গাছ সম্ভাব্য নোড আঁকা হয়
এবং তারপর আপনি don't - পরিবর্তে আপনার মাথায় চিন্তা করার চেষ্টা করছে,
ঠিক আছে, যদি এটা কম, বাম যাও আমি যান বা ডানে যান,
এই ছবি শুধু এ খুঁজছেন, খুব স্পষ্ট যে আমি বাম যেতে
যদি এই নোডের মান হল যে আমি চাই তার চেয়ে অনেক বেশী.
সুতরাং বাম আপনাকে, এখন আমি এ যান 3.
আমি চাই যাও - 3 হয় মান আমি খুঁজছি, যা 6 থেকে অনেক কম.
সুতরাং অধিকার আমরা যান এবং এখন আমি 6 আপ শেষ,
যা মান জন্য আমি, সেইজন্য আমি ফিরে সত্য করছি.
পরের মান জন্য আমি সন্ধান যাচ্ছি 10.
ঠিক আছে. কেটে যে - - ব্যবহার করে root অনুসরণ যাচ্ছে 10 সুতরাং এখন,, যাচ্ছে.
এখন, 10 থেকে 7 তার চেয়ে অনেক বেশী হবে, তাই না আমি ডান দিকে তাকান করতে চান.
আমি ধরে এখানে আসা যাচ্ছে না, 10 থেকে 9 চেয়ে বেশী হবে,
আমি ডান দিকে তাকান চান যাচ্ছি.
আমি এখানে আসা উপর, কিন্তু এখানে উপর এখন আমি নাল এ আছি.
কি আমি যদি আমি নাল আঘাত করবেন?
[ছাত্র] মিথ্যা ফিরুন? >> হ্যাঁ. 10 আমি খুঁজে পাইনি.
1 একটি প্রায় একই কেস হতে চলেছে,
ছাড়া এটা করা যাচ্ছে ফ্লিপ যাও; পরিবর্তে খুঁজছেন
ডান দিকে নিচে, আমি বাম দিকে তাকান নিচে যাচ্ছি.
>> এখন আমি মনে করি আমরা আসলে কোড পাওয়ার জন্য.
এখানে যেখানে - CS50 যন্ত্র খুলুন এবং আপনার উপায় আছে নেভিগেট,
কিন্তু আপনার স্থান ঠিক করতে পারেন না.
এটা সম্ভবত এর জায়গায় এটা আদর্শ,
কারণ আমরা স্থান মধ্যে কাজ করতে পারে.
"প্রথমে আমরা একটি নতুন বাইনারি গাছ নোড int মান ধারণকারী জন্য টাইপ সংজ্ঞা প্রয়োজন হবে.
Boilerplate typedef নীচের ব্যবহার করে,
একটি নতুন বাইনারি ট্রি একটি নোডের জন্য টাইপ সংজ্ঞা তৈরি.
আপনি যদি আটকে যান. . . "বাজে কথা, বাজে কথা, বাজে কথা. ঠিক আছে.
সুতরাং এর এখানে boilerplate করা যাক,
typedef struct নোড, এবং নোড. হাঁ, ঠিক আছে.
তাই কি আমরা আমাদের ক্ষেত্র নোডের মধ্যে চান যাচ্ছেন?
[ছাত্র] আন্তর্জাতিক এবং তারপর দুই পয়েন্টার?
>> আন্তর্জাতিক মান, দুই পয়েন্টার? আমি কিভাবে পয়েন্টার লিখুন?
[ছাত্র] struct. >> আমি ইন হ্যাঁ, তাই struct নোড * বামে জুম করা উচিত,
এবং struct নোড * অধিকার.
এবং শেষ সময় থেকে আলোচনা মনে রাখবেন,
এই যে কোন অর্থে তোলে, এই অর্থে কোন তোলে,
এই অর্থে কোন তোলে.
আপনি যা কিছু আছে প্রয়োজন এই recursive struct সংজ্ঞায়িত.
ঠিক আছে, যাতে এর কি আমাদের গাছ অনুরূপ যাচ্ছে.
যদি আমরা একটি trinary গাছ কি তারপর, একটি নোড B1, b2, b3 struct নোড * মত চেহারা হতে পারে,
যেখানে b হল একটি শাখা - প্রকৃতপক্ষে, আমি আরো শোনা করেছি এটা মধ্যম বাম, ডান, কিন্তু যাই হোক না কেন,.
আমরা শুধুমাত্র বাইনারি যত্নশীল, তাই ডান, বাম.
"এখনই গাছ মূল নোডের জন্য একটি বিশ্বব্যাপী * পরিবর্তনশীল. ডিক্লেয়ার"
তাই আমরা তা করতে যাচ্ছেন না.
যাতে সামান্য জিনিস আরো কঠিন এবং আরো সাধারণ করতে,
আমরা একটি বিশ্বব্যাপী নোড পরিবর্তনশীল থাকবে না.
প্রধান পরিবর্তে, আমরা আমাদের সমস্ত নোড জিনিষ ঘোষণা করা হবে,
এবং তার মানে তাদের নীচে, যখন আমরা শুরু চলমান
আমাদের রয়েছে ফাংশন এবং আমাদের সন্নিবেশ ফাংশন,
পরিবর্তে আমাদের রয়েছে মাত্র ফাংশন বিশ্বব্যাপী এই নোডের ভেরিয়েবল ব্যবহার করে,
আমরা একটি আর্গুমেন্ট হিসাবে এটি গাছ নিতে যাচ্ছে যে আমরা এটিকে প্রক্রিয়া যাও চান সেটি.
বিশ্বব্যাপী পরিবর্তনশীল রয়ে জিনিষ সহজ করতে অনুমিত ছিল.
আমরা কঠিন জিনিষ করতে যাচ্ছেন.
এখন একটি মিনিট জিনিস থেকে এই সাজানোর ঠিক নিতে,
যেখানে ভিতর প্রধান আপনি এই ট্রি তৈরি করতে চান, এবং যে সমস্ত আপনি কাজ করতে চান.
এবং চেষ্টা করুন আপনার প্রধান ফাংশনে এই ট্রি নির্মাণ করা.
>> ঠিক আছে. সুতরাং আপনি আছে নির্মিত সম্পূর্ণ উপায় গাছ এখনো আছে না.
কিন্তু কেউ কিছু আমি থামা পারে আছে
কিভাবে এই ধরনের একটি ট্রি নির্মাণের শুরু দেখাতে পারে?
[ছাত্র] কেউ এর banging, যাও আউট চেষ্টা করছিলেন.
[Bowden] যে কেউ তাদের ট্রি নির্মাণ করতে স্বাচ্ছন্দ্য?
[ছাত্র] শিওর. এটা কাজ না. >> এটা সূক্ষ্ম. আমরা শুধু শেষ করতে পারেন -
উহু, এটি আপনি সংরক্ষণ করতে পারবেন? কি আনন্দ.
তাই আমরা এখানে আছে - উহু, সামান্য আমি বন্ধ করছি কাটা.
আমি এ জুম হয়েছে?
জুম ইন, আউট স্ক্রল. >> আমি একটা প্রশ্ন আছে. >> হ্যাঁ?
[ছাত্র] আপনি যখন struct সংজ্ঞায়িত হয় সক্রিয়া করা কিছু ভালো জিনিস?
[Bowden] নং >> ঠিক আছে. সুতরাং আপনি আরম্ভ করা হবে -
[Bowden] নং যখন আপনি, অথবা একটি সংজ্ঞায়িত struct যখন আপনি ঘোষণা,
এটা যদি আপনি এর কোন int ডিক্লেয়ার চান; এটি ডিফল্টরূপে সক্রিয়া করা হয় না.
এটা ঠিক একই জিনিস. এটি তার ব্যক্তিগত ক্ষেত্র প্রতিটি মত
এটি একটি মধ্যে আবর্জনা মান থাকতে পারে. >> এবং এটা সম্ভব সংজ্ঞায়িত - অথবা একটি struct ডিক্লেয়ার
একটি উপায় আছে যে এটা তাদের আরম্ভ?
[Bowden] হ্যাঁ. সুতরাং, শর্টকাট প্রারম্ভিক বাক্য গঠন
অনুরূপ যাচ্ছে -
দুটি উপায়ে আমরা এই কাজ করতে পারেন. আমি মনে করি আমরা এটা কম্পাইল করা উচিত
নিশ্চিত ঝনঝন করা এছাড়াও এই আছে.
আর্গুমেন্ট ক্রম struct মধ্যে যে আসে,
আপনি এই তরঙ্গায়িত ধনুর্বন্ধনী ভিতরে আর্গুমেন্ট হিসাবে আদেশ দেন.
তাই আপনি যদি যাও যাও 9 এটি আরম্ভ করতে চান এবং বাকি তারপর ডান নাল করা এবং অকার্যকর করা,
এটি 9, হতে নাল, নাল হবে.
বিকল্প হয়, এবং সম্পাদক এই বাক্য গঠন না পছন্দ করি না,
এবং এটা মনে করে আমি একটি নতুন ব্লক করতে চান,
কিন্তু বিকল্প কিছু ভালো -
এখানে, আমি একটি নতুন লাইন থেকে তা রেখে দেব.
আপনি স্পষ্টভাবে বলতে পারে, আমি সঠিক বাক্য গঠন ভুলবেন না.
সুতরাং আপনি স্পষ্টভাবে তাদের নামের দ্বারা, ঠিকানা এবং বলতে পারেন,
. গ, বা. মান = 9,. বাম = শূন্য.
আমি কমা করা প্রয়োজন এই অনুমান করছি.
. ডান = শূন্য, তাই এই ভাবে আপনি না
আসলে struct অনুযায়ী জানা প্রয়োজন,
এবং যখন আপনি এই পড়ি, এটা আরো অনেক কিছু স্পষ্ট
কি আমার মান সক্রিয়া করা হচ্ছে.
>> এই যে সব জিনিষ এক এরকম -
অধিকাংশ অংশ জন্য, তাই, সি + + সি হল একটি সুপারসেটও
আপনি সি কোড নিতে, এটি তার সি + +, এবং এটা কম্পাইল করা উচিত অগ্রসর না হতে পারেন.
এই যে সি + + সমর্থন করে না এক, যাতে লোকেরা এটি না থাকে.
আমি যদি যে একমাত্র কারণ তা না ঝোঁক জানি না,
কিন্তু কেস যেখানে আমি এটা ব্যবহার করা প্রয়োজন সি + +, তাই না এবং আমি এই ব্যবহার করতে পারেন এর সাথে কাজ করা প্রয়োজন.
কিছু যে আরেকটি উদাহরণ সি + + এর সাথে কাজ করে না
কিভাবে একটি malloc "অকার্যকর *," ফেরৎ টেকনিক্যালি,
কিন্তু আপনি ঠিক গৃহস্থালি * x = malloc যাই হোক না কেন বলতে পারে,
এবং এটি স্বয়ংক্রিয়ভাবে একটি গৃহস্থালি * যাও নিক্ষেপ করা হবে.
যে স্বয়ংক্রিয় অভিনেতা না ঘটতে সি + +.
যে, কম্পাইল না এবং আপনি স্পষ্টভাবে বলতে প্রয়োজন করবে
গৃহস্থালি *, malloc, যাই হোক না কেন, একটি গৃহস্থালি * এটি নিক্ষেপ.
অনেক জিনিস আছে যা সি এবং সি + + উপর অসম্মতি নেই,
কিন্তু ঐ দুটি.
সুতরাং আমরা এই বাক্য গঠন সঙ্গে যাবেন.
এমনকি যদি আমরা যে সিনট্যাক্স দিয়ে যান নি,
কি - র সাথে ভুল হতে পারে?
[ছাত্র] আমি এটা dereference করতে হবে না? >> হ্যাঁ.
মনে রাখবেন যে তীর একটি অন্তর্নিহিত dereference আছে,
এবং যখন আমরা শুধু একটি struct সঙ্গে লেনদেন করছেন,
আমরা ব্যবহার করতে চান. একটি struct ক্ষেত্রের ভিতর এ পেতে.
এবং শুধুমাত্র সময় আমরা তীর ব্যবহার হয় যখন আমরা যেতে চাই -
ভাল, তীর সমতূল্য যাও -
তাই এটা বোঝানো যদি আমি তীর ব্যবহৃত হবে.
সমস্ত তীর মানে, এই dereference এখন, আমি একটি struct এ আছি, এবং আমি ক্ষেত্রের পেতে পারেন.
হয় সরাসরি অথবা ক্ষেত্র dereference পেতে পেতে এবং ক্ষেত্র -
আমি অনুমান এই মান হওয়া উচিত.
কিন্তু এখানে আমি শুধু একটা struct একটি struct একটি পয়েন্টার, না মোকাবেলা করছি,
এবং যাতে আমি তীর ব্যবহার করতে পারবেন না.
কিন্তু এই জিনিস সাজানোর আমরা সমস্ত নোড জন্য কিছু করতে পারি.
ওহ আমার ঈশ্বর.
এই 6, 7, এবং 3.
তারপর আমরা আমাদের ট্রির শাখা সেট আপ করতে পারেন, আমরা 7 থাকতে পারে না -
আমরা, তার বাম হতে পারে 3 উচিত নির্দেশ.
সুতরাং আমরা যে কিভাবে করব?
[ছাত্র, অপাচ্য] >> হ্যাঁ. node3 ঠিকানা,
এবং যদি আপনি ঠিকানা থাকে না, তাহলে এটা কম্পাইল করবে না.
কিন্তু মনে রাখবেন যে এই পয়েন্টার পরবর্তী নোডের যাও.
9 ডান দিকে নির্দেশ করা উচিত,
এবং 3 6 অধিকার নির্দেশ করা উচিত.
আমার মনে হয় সব সেট. কোন মন্তব্য বা প্রশ্ন?
[ছাত্র, অপাচ্য] ব্যবহার করে root 7 হবে.
আমরা শুধু নোড বলতে পারে * ptr =
অথবা রুট, = & node7.
>> আমাদের জন্য, আমরা সন্নিবেশ সাথে ডিল করা যাচ্ছেন,
তাই আমরা এই বাইনারি গাছ মধ্যে সন্নিবেশ একটি ফাংশন লিখতে চান চলুন
এবং অবশ্যম্ভাবীরূপে সন্নিবেশ যাও malloc একটি নতুন নোডের জন্য এই ট্রি নির্মাণ কল যাচ্ছে.
তাই আমি সত্য সঙ্গে ময়লা পাওয়া যাচ্ছে যে কিছু নোড
স্ট্যাকের উপর বর্তমানে
এবং অন্যান্য নোড যাও হিপ শেষ যখন আমরা তাদের সন্নিবেশ করতে যাচ্ছি.
এটি পুরোপুরি বৈধ, কিন্তু একমাত্র কারণ
আমরা এই স্ট্যাকের করতে
কারণ হল এটা যেমন একটি কল্পিত উদাহরণ আমরা জানি
গাছ 7, 3, 6, 9 হিসাবে নির্মাণ করা অনুমিত হয়.
যদি আমরা এই আছে কি না, তাহলে আমরা malloc যাও আছে প্রথম স্থানে যাবে না.
হিসাবে আমরা একটু পরে দেখতে পাবেন যে, আমরা malloc'ing করা উচিত.
রাইট এখন এটা পুরোপুরি যুক্তিসঙ্গত স্ট্যাকের রাখতে,
কিন্তু যাক এর একটি malloc বাস্তবায়ন এই পরিবর্তন.
সুতরাং এখন এই প্রতিটি কিছু ভালো হতে যাচ্ছে
নোড * node9 = malloc (sizeof (নোড)).
এবং এখন আমরা আমাদের চেক করতে যাচ্ছেন.
যদি (== NULL node9) - আমি যে চাই না -
1, ফিরে যান এবং তারপর আমরা node9> কারণ এখন যে এটা একটা পয়েন্টার করতে পারেন,
মান = 6, node9> বাম = শূন্য,
node9-> ডানে = শূন্য,
এবং আমরা যারা প্রতিটি নোডের জন্য যে কি আছে চলুন.
তাই, আমি কি এটা করা ভিতরে একটি পৃথক ফাংশন.
চলুন শুরু করা যাক কল এটি নোড * build_node,
এবং এই API গুলি আমরা Huffman কোডিং জন্য কিছুটা অনুরূপ.
আমরা একটি গাছ জন্য দিতে সূচনাকারী ফাংশন আপনি
এবং deconstructor যারা গাছ এবং বন জন্য একই জন্য "ভূমিকা".
>> তাই আমরা এখানে একটি সূচনাকারী ফাংশন আছে চলুন
শুধু আমাদের জন্য একটি নোড নির্মাণের.
এবং এটা ঠিক ভালো চমত্কার চেহারা অনেক যাচ্ছে.
এমনকি আমি অলস হতে চাই যাচ্ছে এবং পরিবর্তনশীল নাম পরিবর্তন না,
যদিও node9 কোন মানে আর তোলে.
ওহ, আমি অনুমান node9 এর মান হয়েছে 6 করা উচিত.
এখন আমরা node9 ফিরে আসতে পারেন.
এবং এখানে আমরা নাল ফেরত পাঠাবেন.
যে বিল্ড একটি নোড ফাংশন সকলকে একমত?
তাই এখন আমরা কল করতে পারেন যে একটি নির্দিষ্ট মান এবং নাল পয়েন্টার সঙ্গে কোনো নোড নির্মাণ.
এখন আমরা যে পোকা বলতে পারেন, আমরা নোড * node9 = build_node (9) করতে পারেন.
এবং কিছু জিনিস না. . .
6, 3, 7, 6, 3, 7.
এবং এখন আমরা একই পয়েন্টার সেট আপ করতে চান,
এখন ছাড়া পয়েন্টার নিরিখে সবকিছু ইতিমধ্যেই
তাই আর ঠিকানা প্রয়োজন.
ঠিক আছে. তাই কি জিনিস আমি শেষ করে যেতে চাই?
একটি ত্রুটি পরীক্ষা করা যে আমি কাজ করছি না আছে.
কি রিটার্ন নোড নির্মাণের?
[ছাত্র, অপাচ্য] >> হ্যাঁ. যদি malloc ব্যর্থ, এটি নাল ফিরে আসবেন.
আমি আলস্যে পরিবর্তে প্রতিটি জন্য একটি শর্ত করছেন রাখা এখানে নিচে যাচ্ছি.
যদি (node9 == NULL, বা - এমনকি সহজ,
এই সমতূল্য node9 শুধু যদি না যাও.
তাই যদি না node9, বা না node6, বা না node3, বা না node7, 1 ফিরে.
হয়তো আমরা malloc ব্যর্থ হয়েছে, অথবা কিছু মুদ্রণ উচিত.
[ছাত্র] এটা মিথ্যা হিসাবে ভাল নাল সমান?
[Bowden] কোন শূন্য মান মিথ্যা.
সুতরাং নাল একটি শূন্য মান.
শূন্য একটি শূন্য মান. মিথ্যা একটি শূন্য মান.
কোন - প্রশংসনীয় অনেক শুধুমাত্র 2 শূন্য মান নাল এবং শূন্য,
মিথ্যা শুধুমাত্র হ্যাশ শূন্য হিসাবে সংজ্ঞায়িত.
যে প্রযোজ্য যদি আমরা গ্লোবাল ভেরিয়েবল ডিক্লেয়ার না.
আমরা যদি নোড * রুট আপ এখানে আছে কি,
তারপর - গ্লোবাল ভেরিয়েবল সম্পর্কে চমৎকার একটি বিষয় সবসময় তারা একটি প্রারম্ভিক মান আছে.
এটা সত্য কর্ম না, এখানে ভেতরে কিভাবে,
যদি আমরা আছে, যেমন, নোড বা নোড x.
আমরা কোন ধারণা কি x.value, x.whatever আছে,
অথবা আমরা তাদের মুদ্রণ এবং তারা নির্বিচারে হতে পারে পারে.
যে গ্লোবাল ভেরিয়েবল সত্য না.
সুতরাং রুট নোড বা নোড x.
ডিফল্টরূপে, যা এর বিশ্বব্যাপী, যদি না বর্ণিতভাবে কিছু মান সক্রিয়া করা,
এই ক্ষেত্রে মান হিসাবে একটি শূন্য মান আছে.
তাই এখানে, নোড * root পরিচয়ে, আমরা কিছু এটা স্পষ্টভাবে না আরম্ভ করা,
তাই তার ডিফল্ট মান নাল, হতে হবে যা পয়েন্টার শূন্য মান.
x এর ডিফল্ট মান যে x.value শুন্য মানে যাচ্ছে,
x.left হয় নাল, এবং x.right নাল হয়.
সুতরাং এটি একটি struct, struct ক্ষেত্র সব শূন্য মান হতে হবে.
আমরা যে এখানে ব্যবহার না, যদিও প্রয়োজন.
[ছাত্র] structs অন্য ভেরিয়েবল থেকে আলাদা, এবং অন্যান্য ভেরিয়েবেলগুলো
আবর্জনা মান; এগুলি zeros?
[Bowden] অন্য খুব মান. তাই x এর মধ্যে, x এর জিরো হতে হবে.
যদি এটি বিশ্বব্যাপী এর সুযোগ রয়েছে এ, এটি একটি প্রারম্ভিক মান আছে. >> ঠিক আছে.
[Bowden] প্রারম্ভিক মান হয় আপনি এটা বা শূন্য দিয়েছেন.
আমি মনে করি যে এই সব যত্ন নেয়.
>> ঠিক আছে. সুতরাং প্রশ্নের পরের অংশ জিজ্ঞেস করে,
"এখন আমরা একটি ফাংশন বলা রয়েছে লিখতে চান
bool একটি প্রোটোটাইপ সঙ্গে int মান রয়েছে. "
আমরা bool int মান উপস্থিত না যাচ্ছি না.
আমাদের প্রোটোটাইপ মতো যাচ্ছে
bool রয়েছে int-মান (.
এবং তারপর আমরা এটি গাছ পাস করছি যাচ্ছে
যে এটি চেক করার যাও যদি এটি যে মান আছে দেখতে হবে.
সুতরাং নোড * গাছ). ঠিক আছে.
এবং তারপর আমরা ভালো কিছু সঙ্গে এটি কল করতে পারেন,
হয়তো আমরা printf বা কিছু করতে চাইবেন.
6, আমাদের অর্থাৎ root ধারণকারী.
যে এক, বা সত্য ফেরত পাঠাবেন,
যেখানে রয়েছে 5 রুট মিথ্যা ফেরত পাঠাবেন.
তাই দ্বিতীয় এই বাস্তবায়ন নিতে.
আপনি এটি অথবা iteratively recursively করতে পারেন.
উপায় আমরা জিনিস আপ সেট সম্পর্কে চমৎকার ব্যাপার হল
এটি আমাদের recursive সমাধান অনেক সহজ নিজেকে ধার দেয়
তুলনায় বিশ্বব্যাপী-পরিবর্তনশীল উপায় কি.
কারণ আমরা যদি ঠিক আছে int মান রয়েছে, তাহলে আমরা recursing subtrees নিচে কোন উপায় আছে.
আমরা একটি পৃথক সাহায্যকারী ফাংশন যে recurses আমাদের জন্য subtrees ডাউন আছে থাকবে.
কিন্তু যেহেতু আমরা পরিবর্তন করেছি এটি একটি আর্গুমেন্ট হিসাবে গাছ নিতে,
তা সবসময় প্রথম স্থানে আছে উচিত হয়েছে,
এখন আমরা আরো সহজে recurse করতে পারেন.
তাই বা পৌন: পুনিক recursive, আমরা উভয় উপর যাবেন,
কিন্তু আমরা হচ্ছে বেশ সহজ আপ যে recursive শেষ দেখতে পাবেন.
ঠিক আছে. কেউ কি কিছু আমরা সঙ্গে কাজ করতে পারেন?
>> [ছাত্র] আমি একটি পুনরাবৃত্ত সমাধান পেয়েছেন. >> সমস্ত অধিকার, পুনরাবৃত্ত.
ঠিক আছে, এই ভাল দেখায়.
সুতরাং, এটি এর মাধ্যমে আমাদের পদব্রজে ভ্রমণ করতে চান?
[ছাত্র] শিওর. আমি গাছ প্রথম নোডের পেতে একটি temp ভেরিয়েবলটি নির্ধারণ করবেন.
এবং তারপর আমি যখন temp আছে সমান নাল না মাধ্যমে কর্তিত,
তাই যখন গাছ এখনও ছিল, আমি অনুমান.
এবং যদি মান সমান মান যে temp যাও প্রতি নির্দেশ করা হয়,
তারপর এটা যে মূল্য ফেরৎ.
অন্যথা, এটি পরীক্ষা করে যদি এটি ডাইন বা বাম দিকে যাবে.
আপনি যদি কখনও কোন একটি অবস্থা যেখানে আরো গাছ আছে পেতে,
তারপর এটি ফেরৎ - লুপ করে প্রস্থান করে এবং এটি ফিরিয়ে মিথ্যা.
[Bowden] ঠিক আছে. যাতে মনে হয় ভাল.
কেউ কিছু আর কোনো মন্তব্য আছে?
আমি কি শুদ্ধি মন্তব্য নেই সব.
এক জিনিস যা আমরা করতে পারি এই লোক.
ওহ, এটা একটা সামান্য লম্বাটে যেতে হচ্ছে.
আমি যে স্থির করব. ঠিক আছে.
>> প্রত্যেকেরই তিন কিভাবে কাজ করে মনে রাখা উচিত.
আছে স্পষ্টভাবে পর্যন্ত অতীতে ক্যুইজ হয়েছে
আপনি যে একটি তিন অপারেটর সঙ্গে একটি ফাংশন দিতে,
এবং, বলে এই অনুবাদ, যা তিন ব্যবহার করে না.
সুতরাং এটি একটি খুব সাধারণ ক্ষেত্রে যখন আমি তিন ব্যবহার মনে,
যেখানে যদি কিছু কিছু শর্ত একটি ভেরিয়েবল সেট,
অন্য কিছু অন্য যে একই ভেরিয়েবলটি নির্ধারণ করবেন.
এটা কিছু যে খুব ঘন ঘন আর এই সাজানোর ভাগ করা যায় রুপান্তরিত
যেখানে এই যে পরিবর্তনশীল সেট - বা, ভাল, এই সত্য? তারপর এই, অন্যথায় এই.
[ছাত্র] প্রথম এক হয় যদি সত্যি হয় তবে, ঠিক?
[Bowden] হ্যাঁ. উপায় আমি সবসময় এটা পড়তে হয়, temp সমান মান temp চেয়ে বেশী,
তারপর এই, অন্যথায় এই. এটি একটি প্রশ্ন এর জিজ্ঞাসা.
এটা কি বেশী? তারপর প্রথম জিনিস করে. অন্যথায় দ্বিতীয় জিনিস করে.
আমি প্রায় সবসময় - কোলন, আমি - আমার মাথা, আমি পড়তে হিসাবে অন্যথায়.
>> কেউ কি একটি recursive সমাধান আছে?
ঠিক আছে. এই এক আমরা চলুন - ইতিমধ্যে এটি হতে পারে মহান,
কিন্তু আমরা একে আরো ভাল করতে যাচ্ছেন.
এটি প্রায় কাছাকাছি একই সঠিক ধারণা.
এটি শুধু ভাল,, আপনাকে ব্যাখ্যা করতে চান?
[ছাত্র] শিওর. তাই আমরা নিশ্চিত যে প্রথম ট্রি না নাল তৈরি করছি,
কারণ পরে যদি গাছ হয় নাল এটা মিথ্যা ফিরে কারণ আমরা তা খুঁজে পাওয়া যাচ্ছে না.
এবং যদি এখনও সেখানে একটি বৃক্ষ, এ আমরা যান - আমরা যদি প্রথম মান বর্তমান নোড চেক.
সত্য ফিরুন যদি এটা, এবং যদি না আমরা বাম বা ডান recurse.
আছে যে শব্দ উপযুক্ত? >> Mm-হুম. (চুক্তি)
সুতরাং এই যে প্রায় বিজ্ঞপ্তি - গঠনের দিক দিয়া খুব সমাধান পৌন অনুরূপ.
এটা ঠিক যে এর পরিবর্তে recursing, আমরা যখন একটি লুপ ছিল.
এবং এখানে বেস ক্ষেত্রে যেখানে গাছ আছে সমান নাল না
শর্ত ছিল অধীন যা আমরা যখন লুপ এর ছড়িয়ে পড়ছিল.
তারা খুবই অনুরূপ. কিন্তু আমরা আরও এই এক পদক্ষেপ নিতে যাচ্ছেন.
এখন, আমরা এখানে একই জিনিস করে.
আমরা এই লাইন দুটি একই জিনিস করছি ফিরে বিজ্ঞপ্তি,
এক যুক্তি জন্য ছাড়া হয় বিভিন্ন.
তাই আমরা তিন মধ্যে যে করতে যাচ্ছেন.
আমি বিকল্প কিছু আঘাত, এবং এটি একটি প্রতীক গঠিত. ঠিক আছে.
তাই আমরা ফিরে যাচ্ছেন যে রয়েছে.
এই একাধিক লাইন হতে পেয়ে ভাল, না, তা হল জুম হয়েছে.
একটি রচনাশৈলীসংক্রান্ত জিনিস হিসাবে সাধারণত,, আমি অনেক মানুষের মনে না করেন
তীর পরে একটি স্পেস রাখতে কিন্তু আমি অনুমান যদি আপনি সংগতিপূর্ণ, এটা সূক্ষ্ম.
যদি মান গাছ মান কম, আমরা চাই যাও গাছ বাম recurse,
অন্যথায় আমরা গাছ ডানদিকে recurse করতে চান.
যাতে ছিল তৈরীর এই বর্ণন ছোট, তার এক পদক্ষেপ.
যার ফলে এই বর্ণন ছোট দুটি পর্যায় -
আমরা এই একাধিক লাইন আলাদা করতে পারেন.
ঠিক আছে. একে চেহারা ছোট ধাপ দুটি এখানে,
তাই ফিরতি মূল্য গাছ মান সমান, বা যাই হোক না কেন রয়েছে.
>> এটি একটি গুরুত্বপূর্ণ বিষয়.
আমি যদি তিনি বলেছিলেন বর্গ মধ্যে স্পষ্টভাবে নিশ্চিত হইনি,
কিন্তু এটি শর্ট - সার্কিট ঘটানো মূল্যায়ন বলা হচ্ছে.
এখানে ধারণা হয় মান == গাছ মান.
যদি এটি সত্য হয় তাহলে, এটি সত্য হয়, এবং আমরা চাই যাও 'বা' যে সঙ্গে যা কিছু থাকে এখানে বেশী.
তাই ছাড়া এখানে উপর যা কিছু থাকে সম্পর্কে আপনারা চিন্তা,
সম্পূর্ণ অভিব্যক্তি ফিরে যাচ্ছে কি?
[ছাত্র] মুক্ত? >> হ্যাঁ, কারণ কিছু সত্য,
or'd - কিছু বা সত্য or'd হয় অগত্যা সত্য.
তাই যত তাড়াতাড়ি আমরা ফিরতি মূল্য = গাছ মান দেখুন,
আমরা ঠিক করছি সত্য ফিরে যাচ্ছে.
এমনকি যাচ্ছে recurse যাও নেই আরও রয়েছে লাইন ডাউন.
আমরা এই এক ধাপ অগ্রসর হবো পারেন.
ফিরে গাছ আছে সমান নাল এবং এই সব না.
এটি তৈরি করা এটি একটি এক লাইন ফাংশন.
এটি হল শর্ট - সার্কিট ঘটানো মূল্যায়ন একটি উদাহরণ.
কিন্তু এখন এটা একই ধারণা -
পরিবর্তে - তাই যদি গাছ নাল সমান না - বা ভাল,,
যদি গাছ সমান নাল আছে, যা খারাপ কেস,
যদি গাছ সমান নাল তারপর, প্রথম শর্ত মিথ্যা হতে চলেছে.
সুতরাং মিথ্যা কিছু সঙ্গে anded কি হবে?
[ছাত্র] মিথ্যা. >> হ্যাঁ. এটি শর্ট - সার্কিট ঘটানো মূল্যায়ন অপরার্ধ,
যেখানে যদি গাছ না সমান নাল, তারপর না আমরা এমনকি যেতে হয় যাব না -
অথবা যদি সমান নাল গাছ আছে, তাহলে আমরা মান == গাছ মান না যাচ্ছি না.
আমরা ঠিক করছি অবিলম্বে মিথ্যা ফিরে যাচ্ছে.
যা খুবই গুরুত্বপূর্ণ, যেহেতু এটি যদি শর্ট - সার্কিট ঘটানো মূল্যনির্ধারণ না,
তারপর যদি গাছ সমান নাল আছে, এই দ্বিতীয় শর্ত seg ফল্ট যাচ্ছে,
কারণ গাছ> মান নাল dereferencing হয়.
সুতরাং যে যে. এই করতে পারে - একবার উপর নামান.
এটি একটি খুব সাধারণ বিষয়, যার ফলে এই এই সঙ্গে এক লাইন না,
কিন্তু এটা একটা শর্ত সাধারণ ব্যাপার, হয়ত ঠিক না,
কিন্তু যদি (গাছ! = শূন্য, এবং গাছ> মান == মান), যাই হোক না কেন না.
এটি একটি খুব সাধারণ অবস্থা, যেখানে পরিবর্তে হচ্ছে
দুই IFS মধ্যে এই বিরতি, যেখানে চান, গাছ নাল?
ঠিক আছে, এটা নাল না, তাই এখন গাছ মান সমান মান? এই কি.
পরিবর্তে, এই অবস্থা, এই ফল্ট seg না করা
কারণ এটা যদি এই ফাঁকা happens ভঙ্গ করা হবে.
ওয়েল, আমি অনুমান যদি আপনার ট্রি একটি সম্পূর্ণ অবৈধ পয়েন্টার, এটি এখনও ফল্ট seg করতে পারেন,
কিন্তু এটি ফল্ট seg যদি গাছ হয় নাল করতে পারবেন না.
যদি এটা ছিল নাল, এটি আগে কখনো আপনি প্রথম স্থানে পয়েন্টার dereferenced বিরতি করবে.
[ছাত্র] এই তথাকথিত অলস মূল্যায়ন?
>> [Bowden] অলস মূল্যায়ন একটি পৃথক বিষয়.
অলস মূল্যায়ন হয় আরো ভালো আপনি একটি মান জন্য অনুরোধ,
আপনি একটি মান, ধরনের গণনা জিজ্ঞাসা, কিন্তু আপনি অবিলম্বে প্রয়োজন তা না.
সুতরাং পর্যন্ত আসলে আপনি এটি প্রয়োজন, এটি বুদ্ধ নয়.
এই একই জিনিস ঠিক, না কিন্তু Huffman pset,
এটা বলছেন যে আমরা "আলস্যভরে" লিখুন.
কারণ আমরা যে কারণ হল, আসলে আমরা লেখার করছি বাফারিং -
আমরা এক সময়ে পৃথক বিট লিখতে না চান,
অথবা একটি সময়ে পৃথক বাইট, আমরা বদলে যাও বাইটের একটি খণ্ড পেতে চান.
তারপরে আমরা বাইটের একটা তাল থাকে, তখন আমরা তা লিখুন আউট করব.
যদিও আপনি এটা লিখতে চান - এবং fwrite এবং fread জিনিস একই সাজান না.
তারা আপনার সার্চ লিখেছেন বাফার.
যদিও আপনি অবিলম্বে লিখুন এটা জিজ্ঞাসা, সম্ভবত এটি না করবে না.
এবং আপনি কি নিশ্চিত যে জিনিস হবে যাচ্ছে হতে পারে না
যতক্ষন না আপনি hfclose কল বা যাই হোক না কেন এটা,
তারপর যা বলছেন, ঠিক আছে, আমি আমার ফাইলটি বন্ধ করছি,
মানে আমি ভালো সবকিছু আমি এখনও না লিখতে চাই.
এটা কোন করেনি সবকিছু আউট লিখুন প্রয়োজন
যতক্ষন না আপনি ফাইলটি বন্ধ করতে হয়, এবং তারপর এটি প্রয়োজন.
সুতরাং যে শুধু কি অলস - এটা অপেক্ষা পর্যন্ত এটি ঘটতে হয়েছে.
এই - 51 এবং নেন, তাহলে আপনি তা আরো বিস্তারিতভাবে যাবেন,
কারণ 51 মধ্যে OCaml এবং সবকিছু, সব recursion.
কোন সমাধান, মূলত পুনরাবৃত্ত হয়.
সব recursion, এবং অলস মূল্যায়ন
পরিস্থিতিতে অনেক জন্য গুরুত্বপূর্ণ হতে চলেছে
যেখানে, যদি আপনি আলস্যভরে মূল্যনির্ধারণ না করে থাকেন, এর অর্থ হবে -
উদাহরণ হল স্ট্রিম, যা অসীম দীর্ঘ.
তত্ত্ব, আপনি 1-2-3-4-5-6-7 একটি প্রবাহ স্বাভাবিক সংখ্যার হিসাবে মনে করতে পারেন,
তাই আলসেমি করে বুদ্ধ জিনিষ সূক্ষ্ম.
যদি আমি বলে আমি দশম সংখ্যা চান, তাহলে আমি দশম সংখ্যা নির্ণয় করা আপ করতে পারেন.
যদি আমি শততম নম্বর চান, তাহলে আমি শততম সংখ্যা নির্ণয় করা আপ করতে পারেন.
অলস মূল্যায়ন ছাড়া, তাহলে তা অবিলম্বে সব সংখ্যা নির্ণয় করা চেষ্টা করে যাচ্ছে.
আপনি অনেক অসীম সংখ্যা নির্ণয় করছেন, এবং যে শুধু সম্ভব না.
সুতরাং পরিস্থিতিতে অনেক আছে যেখানে অলস মূল্যায়ন
হয় things কাজ পেয়ে শুধু অপরিহার্য.
>> এখন আমরা সন্নিবেশ যেখানে সন্নিবেশ করা যাচ্ছে লিখতে চান
তার সংজ্ঞা একভাবে পরিবর্তন.
তাই এখনই এটা bool সন্নিবেশ (int মান).
আমরা bool সন্নিবেশ (int মান, নোড * ট্রির মধ্যেকার) যে পরিবর্তন চলুন.
আমরা আসলে করছি কিছুক্ষনের মধ্যে আবার পরিবর্তন করতে যাচ্ছেন, আমরা কেন দেখতে পাবেন.
এবং let এর build_node সরানো ঠিক তা নরক জন্য,,
উপরে আমরা একটি ফাংশন প্রোটোটাইপ লিখুন না সন্নিবেশ করুন.
যা কেবল একটা ইংগিত যে আপনি সন্নিবেশ মধ্যে build_node ব্যবহার করা চলুন.
ঠিক আছে. যে জন্য একটি মিনিট সময় লাগবে.
আমি মনে করি আমি সংস্করণ সংরক্ষিত যদি আপনি যে থেকে বৈঠাচালনা করতে চান,
বা, অন্তত, আমি এখন কি.
আমি একটি সন্নিবেশ পক্ষে যুক্তি সম্পর্কে ভাবতে অসম্মান বিভাজক চেয়েছিলেন,
যদি আপনি মনে করতে পারেন না.
মূলত, আপনি কি কখনো শুধুমাত্র এ পাতার সন্নিবেশ করা হবে.
মত, যদি আমি 1 সন্নিবেশ করুন, তারপরে আমি অবশ্যম্ভাবীরূপে চলেছি যাও 1 সন্নিবেশ করা হবে -
এখানে I'll উপর 1 সন্নিবেশ করা হবে - আমি কালো পরিবর্তন করব.
অথবা যদি আমি 4 সন্নিবেশ, আমি চাই এখানে 4 সন্নিবেশ করা হবে.
সুতরাং কোন ব্যাপার আপনি কি করবেন, আপনি একটি পাত এ সন্নিবেশিত করা চলুন.
আপনাকে যা করতে হবে তা হচ্ছে গাছ পুনরুক্তি নিচে পর্যন্ত আপনি নোড পেতে
যে নোড এর পিতা বা মাতা, নতুন নোড এর ঊর্ধ্বতন করা উচিত,
এবং তারপর তার বাম বা ডান পয়েন্টার, পরিবর্তন কিনা তার উপর নির্ভর করে
এর চেয়ে বড় বা বর্তমান নোড কম.
যে পয়েন্টার আপনার নতুন নোডের নির্দেশ পরিবর্তন করুন.
তাই গাছ পুনরুক্তি নিচে, নতুন পাতার নোড পয়েন্ট করা.
কেন যে আগে পরিস্থিতির টাইপ নিষিদ্ধ সম্পর্কে এছাড়াও মনে,
যেখানে আমি বাইনারি ট্রি নির্মাণ যেখানে এটি সঠিক ছিল
আপনি যদি শুধুমাত্র একটি নোড দিকে তাকিয়ে,
কিন্তু 9 7 বাঁদিকে ছিল যদি আপনি iterated সমস্ত উপায় নিচে.
যাতে এর মধ্যে থেকে এই দৃশ্যকল্প অসম্ভব, -
মনে সম্পর্কে ঢোকাতে 9 বা কিছু; প্রথম নোডের এ,
আমি 7 এবং দেখুন আমি শুধু ডান যেতে যাচ্ছে যাচ্ছি.
তাই আমি কোন ব্যাপার না, যদি আমি যাচ্ছি মাত্র যাও দ্বারা ঢোকাতে চাই,
এবং একটি পাত যথাযথ অ্যালগোরিদম ব্যবহার করে,
এটা করা অসম্ভব জন্য সম্পর্কে 7 বাঁদিকে 9 ঢোকানোর যাচ্ছে
কারণ যত তাড়াতাড়ি আমি 7 আঘাত আমি ডান যেতে চলেছি.
কেউ কি দিয়ে শুরু কিছু আছে?
[ছাত্র] আমি না. >> শিওর.
[ছাত্র, অপাচ্য]
[অন্য ছাত্র, অপাচ্য]
[Bowden] এটা এর প্রশংসা করেন. ঠিক আছে. ব্যাখ্যা করতে চান?
>> [ছাত্র] যেহেতু আমরা জানি যে আমরা ঢোকাতে হয়
গাছ শেষে নতুন নোড,
আমি গাছ মাধ্যমে iteratively কর্তিত
যতক্ষণ না আমি একটি নোডের মধ্যে যে নাল তীক্ষ্ন যাও না.
এবং তারপর আমি এটা করা হয় ডাইন বা বাম পাশে করার সিদ্ধান্ত নিয়েছে
এই অধিকার ভেরিয়েবল ব্যবহার করে; এটা সম্পর্কে বলা যেখানে যাও লাগাতে হবে.
এবং তারপর মূলত,, আমি ঠিক করেন যে শেষ -
যে নতুন নোডের মধ্যে যে এটা তৈরি হয়েছিল temp নোড পয়েন্ট,
হয় বাম বা ডান পাশের সাইড কি অধিকার মান ছিল, তার উপর নির্ভর করে.
অবশেষে, আমি নতুন করে পরীক্ষার মান নোড মান সেট.
[Bowden] ঠিক আছে, তাই আমি এখানে একটি বিষয় দেখুন.
এই উপায় আছে 95% মত.
এক সমস্যা যে আমি দেখতে ভাল,, অন্য কেউ একটি বিষয় না দেখতে?
অবস্থার অধীন তারা লুপ বিরতি আউট কি?
[ছাত্র] যদি temp হয় নাল? >> হ্যাঁ. সুতরাং কিভাবে আপনি লুপের আউট বিরতি হয় যদি temp নাল হয়.
আমি কিন্তু কি করবেন ঠিক?
আমি dereference temp, যা অবশ্যম্ভাবীরূপে নাল.
সুতরাং অন্যান্য জিনিস আপনাকে কেবল মাত্র ট্র্যাক পর্যন্ত temp হয় নাল রাখা হয় না,
আপনি প্যারেন্ট সব সময়ে ট্র্যাক রাখতে চান.
আমরা নোড * ঊর্ধ্বতন চান, আমি অনুমান আমরা এ নাল প্রথম যে রাখতে পারেন.
এই ট্রি রুট জন্য অদ্ভুত আচরণ আছে যাচ্ছে,
কিন্তু আমরা যে পাবেন.
যদি মান যাই হোক না কেন তার চেয়ে অনেক বেশী, তাহলে temp = temp অধিকার.
কিন্তু আগে আমরা যে, পিতা বা মাতা = temp.
অথবা বাবা হয় সর্বদা সমান temp যাব? এটা কি কেস?
যদি temp নাল নয়, তারপরে আমি নিচে নামাও, কোনো ব্যাপার নয় চলেছি,
একটি নোডের জন্য যা temp হয় পিতা বা মাতা.
সুতরাং পিতা বা মাতা যাও temp হবে, এবং তারপর এর নিচে আমি temp সরাতে.
এখন temp হয় নাল, কিন্তু জিনিস যা নাল অভিভাবক পিতামাতার পয়েন্ট.
তাই নিচে এখানে, আমি অধিকার সমান 1 সেট করতে না চান.
তাই আমি অধিকার সরানো, তাই যদি ডান = 1,
এবং আমি অনুমান তবে আপনাকে কাজ করতে চান -
যদি আপনি বাঁদিকে সরানো, আপনি 0 অধিকার সমান সেট করতে চান.
অন্যথায় যদি আপনি কখনও অধিকার সরানো.
সুতরাং অধিকার = 0. যদি অধিকার = 1,
এখন আমরা পিতামাতার অধিকার পয়েন্টার newnode করতে চাই,
অন্যথায় আমরা পিতামাতার বাম পয়েন্টার newnode করতে চাই.
যে প্রশ্ন?
ঠিক আছে. তাই এই ভাবেই আমরা - ভাল, আসলে, পরিবর্তে এই করছেন,
আমরা অর্ধেক আপনি build_node ব্যবহার প্রত্যাশিত.
এবং তারপর যদি newnode সমান নাল, মিথ্যা ফিরে.
এটা যে. এখন, এই কি আমরা কি আশা.
>> এটা কি কর্মীরা সমাধান করবেন.
এই সঙ্গে আমি "অধিকার" এটি সম্পর্কে না করে উপায় হিসাবে অসম্মতি
কিন্তু এই পুরোপুরি জরিমানা এবং এটি কাজ করবে.
একটা জিনিষ যে এখন একটু অদ্ভুত অধিকার হয়
যদি গাছ নাল হিসাবে আরম্ভ বন্ধ, আমরা একটি নাল গাছ পাস.
আমি অনুমান এটি কিভাবে আপনি একটি নাল ট্রির ক্ষণস্থায়ী আচরণ নির্ধারণ করুন উপর নির্ভর করে.
আমি যে আপনি যদি একটি নাল গাছ পাস মনে,
তারপর একটি নাল গাছ মধ্যে মান সন্নিবেশ
একটি গাছ ঠিক যেখানে শুধুমাত্র মান হল যে একক নোড ফেরত পাঠাবেন.
যে লোকেদের সাথে কি একমত? যদি আপনি চান,, পারা
যদি আপনি একটি নাল গাছ পাস
এবং আপনি তা একটি মান সন্নিবেশ করতে চান, মিথ্যা ফিরে.
এটা সংজ্ঞায়িত আপনি আপ এর.
প্রথম জিনিস আমি এবং তারপর না -
ভাল, আপনি যে কষ্ট করছেন আছে যাচ্ছে, কারণ করছি
এটা সহজ যদি আমরা একটা বিশ্ব পয়েন্টার ছিল হবে,
কিন্তু তাই আমরা যদি গাছ হয় নাল না, না, কিছুই আমরা যে বিষয়ে কি করতে পারেন.
আমরা শুধু ফিরে মিথ্যা পারেন.
আমি সন্নিবেশ পরিবর্তন যাচ্ছি.
টেকনিক্যালি আমরা শুধু এই অধিকার এখানে পরিবর্তন করতে পারে,
কিভাবে এটি জিনিষ এর উপর iterating,
কিন্তু আমি সন্নিবেশ যাও ** গাছ নিতে নোডের মধ্যে পরিবর্তন করতে যাচ্ছেন না.
ডবল পয়েন্টার দেয়া হল.
এর মানে কি?
পরিবর্তে পয়েন্টার নোডের সাথে আচরণ,
জিনিস আমি করা সাধিত চলেছি এই পয়েন্টার.
আমি এই পয়েন্টার সাধিত হবে না.
আমি সরাসরি পয়েন্টার সাধিত হবে না.
এই অর্থ থেকে নিচে আমার, মনে হয় -
ভাল, এখন ডান এই পয়েন্ট নাল যাও.
আমি কি করে যেতে চাই এই পয়েন্টার যাও না নাল নির্দেশ নিপূণভাবে.
আমি এটা আমার নতুন নোডের নির্দেশ চান.
যদি আমি পয়েন্টার আমার পয়েন্টার ট্র্যাক রাখা,
তারপর আমি একটা ঊর্ধ্বতন পয়েন্টার ট্র্যাক রাখতে হবে না.
আমি ট্র্যাক যাও যদি যাও NULL পয়েন্টার প্রতি নির্দেশ আছে তা দেখতে রাখতে পারেন,
এবং যদি পয়েন্টার প্রতি নির্দেশ করা হয় নাল যাও,
এটি নোড আমি চাই নির্দেশ পরিবর্তন.
এবং আমি এটি পরিবর্তন যেহেতু আমি পয়েন্টার একটি পয়েন্টার হতে পারে.
এর এই অধিকার এখন চলুন দেখা যাক.
আপনি আসলে এটি recursively প্রশংসনীয় সহজেই করতে পারেন.
আমরা কি সেটা চান?
হ্যাঁ, আমরা না.
>> চলুন recursively এটি দেখুন.
প্রথমত, আমাদের কি বেস মামলা হবে?
প্রায় সবসময় আমাদের বেস ক্ষেত্রে; আসলে কিন্তু, এই কূট ধরনের.
প্রথম প্রথম জিনিষ, যদি (ট্রি == NULL)
আমি অনুমান করছি আমরা শুধু মিথ্যা ফিরে যাচ্ছে.
এটি আপনার ট্রি হচ্ছে নাল থেকে ভিন্ন.
এটি আপনার রুট হচ্ছে পয়েন্টার নাল পয়েন্টার যাও
যার মানে আপনার রুট পয়েন্টার বিদ্যমান নেই.
তাই নিচে এখানে, যদি আমি না
নোড * - এর দেওয়া ঠিক এই পুনরায়.
নোড * রুট = শূন্য,
এবং তারপর আমি ভালো কিছু করে ঘরে সন্নিবেশ কল চলেছি,
ও root-র মধ্যে সন্নিবেশ 4.
সুতরাং & root পরিচয়ে, যদি root পরিচয় হয় একটি নোড *
তারপর ও root-র একটি নোড ** হবে.
এটা বৈধ. এই ক্ষেত্রে, বৃক্ষ পর্যন্ত, এখানে,
অথবা সন্নিবেশ - ট্রি নাল নয়.
এখানে. বৃক্ষ হয় নাল না; * গাছ হয় নাল, যা সূক্ষ্ম
কারণ যদি * গাছ হয় নাল তারপর, আমি এটা করতে পারেন নিপূণভাবে
যাও এখন কি আমি তা নির্দেশ করতে চান, তাদের প্রতি নির্দেশ করুন.
কিন্তু যদি গাছ হয় নাল, তার মানে আমি এখানে নিচে আসেন এবং বলেন নাল.
যে অর্থে দেখা যায় না. আমি যে কিছুই করতে পারবো না.
যদি গাছ হয় নাল, মিথ্যা ফিরে.
তাই আমি মূলত ইতিমধ্যে বলেন কি আমাদের বাস্তব বেস মামলা হয়.
এবং যে কি হতে যাচ্ছে?
[ছাত্র, অপাচ্য]
[Bowden] হ্যাঁ. তাই আপনি যদি (* গাছ == NULL).
এই ক্ষেত্রে এখানে উপর সম্পর্কিত
যেখানে যদি আমার লাল পয়েন্টার হয় পয়েন্টার আমি উপর নিবদ্ধ করছি,
যেমন আমি এই পয়েন্টার উপর নিবদ্ধ করছি এখন, আমি এই পয়েন্টার উপর নিবদ্ধ করছি.
এখন আমি এই পয়েন্টার উপর নিবদ্ধ করছি.
তাই আপনি যদি আমার লাল পয়েন্টার, যা আমার নোড **,
আগের - * যদি, আমার লাল পয়েন্টার, আগের নাল,
তার মানে আমি ক্ষেত্রে যেখানে আমি একটি পয়েন্টার যে পয়েন্ট উপর মনোযোগ নিবদ্ধ করা হবে -
এই একটি মাত্র পয়েন্টার সঙ্গে জড়িত.
আমি এই পয়েন্টার আমার নতুন নোডের নির্দেশ পরিবর্তন করতে চান.
এখানে উপরে ফিরে আসুন.
আমার newnode ঠিক করা নোডের * n = build_node (মান) হবে
তারপর n = শূন্য যদি হবে, মিথ্যা ফিরে.
অন্যথায় আমরা কি পয়েন্টার বর্তমানে হয় প্রতি নির্দেশ পরিবর্তন করতে চান
যাও এখন আমাদের সদ্য নির্মিত নোড দিকে নির্দেশ করে.
আমরা আসলে কি যে এখানে করতে পারেন.
পরিবর্তে n বলছে, আমরা বলতে ট্রি * = * যদি গাছ.
প্রত্যেকেরই যে বোঝেন? যে পয়েন্টার পয়েন্টার সাথে আচরণ,
আমরা জিনিস আমরা তাদের প্রতি নির্দেশ করতে চান, তাদের নির্দেশ নাল পয়েন্টার পরিবর্তন করতে পারেন.
এটা আমাদের বেস কেস.
>> এখন আমাদের পুনরাবৃত্তি, অথবা আমাদের recursion,
অন্য সব recursions আমরা কাজ করছি খুব অনুরূপ হবে.
আমরা মান সন্নিবেশ করুন চান চলুন,
এবং এখন আমি আবার তিন ব্যবহার করে যাচ্ছে, কিন্তু করছি কি না আমাদের অবস্থা হতে যাচ্ছে?
না কি এটি আমরা কি আমরা বাম বা ডান যেতে চান সিদ্ধান্ত খুঁজছেন?
চলুন শুরু করা যাক পৃথক ধাপ মধ্যে তা করে.
যদি (মান <) কি?
[ছাত্র] গাছ এর মান?
[Bowden] তাই আমি মনে রাখবেন বর্তমানে না -
[ছাত্র, অপাচ্য]
[Bowden] হ্যাঁ, তাই সরাসরি কিছু বলতে যে এই সবুজ তীর
কি বর্তমানে গাছ হল একটি উদাহরণ, এই পয়েন্টার একটি পয়েন্টার.
সুতরাং তার মানে আমি 3 যাও একটি পয়েন্টার একটি পয়েন্টার.
dereference দুবার ধ্বনিত ভাল.
আমি কি - না কিভাবে আমি তা করতে?
[ছাত্র] একবার Dereference, এবং তারপর তীর যে কি উপায়?
[Bowden] তাই (* ট্রির মধ্যেকার) হয় একবার dereference, -> মূল্য
যাও সম্পর্কে নোড যে আমি পরোক্ষভাবে নিকট প্রতি নির্দেশ মূল্য দিতে হবে.
তাই আমি লিখতে পারেন এটি tree.value ** আপনি যদি চান যে.
কাজ হয়.
যদি হয় কেস, তারপরে আমি মান সন্নিবেশ কল করতে চান.
এবং কি আমার নোড আপডেট ** না হতে যাচ্ছে?
আমি বাম যেতে চান, তাই ** tree.left আমার বাম হবে.
এবং আমি যে জিনিস যাও পয়েন্টার চান
যাতে যদি বাম আপ শেষ হচ্ছে নাল পয়েন্টার,
আমি আমার নতুন নোডের দিকে নির্দেশ করে এটি পরিবর্তন করা যায়.
>> এবং অন্যান্য ক্ষেত্রে খুব অনুরূপ হতে পারে.
চলুন আসলে যে আমার তিন ডান এখন না.
মান যদি মান <(** গাছ). মান সন্নিবেশ করুন.
তারপর আমরা আমাদের বাম ** আপডেট করতে চান,
অন্যথায় আমরা অধিকার আমাদের ** আপডেট করতে চান.
[ছাত্র] যে পয়েন্টার যাও পয়েন্টার কি পেতে পারি?
[Bowden] মনে রাখবেন - ** tree.right একটি নোড তারকা.
[ছাত্র, অপাচ্য] >> হ্যাঁ.
** Tree.right এই পয়েন্টার অথবা এরকম কিছু একটা হয়.
তাই একটা পয়েন্টার গ্রহণ করে, যে সম্পর্কে দেয় আমি কি করতে চান
যে লোক যাও পয়েন্টার.
[ছাত্র] আমরা আবার যেতে উপর কেন আমরা দুটি পয়েন্টার ব্যবহার করে থাকেন যায়নি?
[Bowden] হ্যাঁ. তাই - না, আপনি এবং, যে আগে সমাধান করতে পারেন
ছিল দুই পয়েন্টার করছেন ছাড়া এরকম একটি উপায়.
আপনি দুই পয়েন্টার ব্যবহার করে বুঝতে সক্ষম হতে হবে,
এবং এই একটি ক্লিনার সমাধান.
এছাড়াও, নোটিশ, কি যদি আমার ট্রি -
যদি আমার রুট ছিল নাল কি? যদি আমি এই ক্ষেত্রে কি অধিকার এখানে কি হয়?
সুতরাং নোড * রুট = শূন্য, root-র মধ্যে সন্নিবেশ 4.
না কি পরে root-র এই হতে যাচ্ছে?
[ছাত্র, অপাচ্য] >> হ্যাঁ.
Root-র মান 4 হবে.
Root-র বাম যাও নাল হবে, root-র অধিকার নাল হবে.
Root-র ক্ষেত্রে, যেখানে আমরা ঠিকানা দ্বারা পাস না,
আমরা রুট পরিবর্তন করতে পারে.
ইন কেস যেখানে গাছ - যেখানে রুট ছিল নাল,
আমরা শুধু মিথ্যা ফিরিয়ে দিতে হয়. আমরা কিছুই করতে পারে নাই.
আমরা একটি খালি ট্রি একটি নোডের মধ্যে সন্নিবেশ করা যাবে না.
আমরা শুধু এক নোডের মধ্যে ট্রি একটি খালি ট্রি করা; কিন্তু এখন আমরা করতে পারেন.
সাধারণতঃ প্রত্যাশিত উপায় যে এটি কাজ অনুমিত এর.
>> উপরন্তু, এই সময়ের তুলনায় উল্লেখযোগ্যভাবে খাটো
এছাড়াও প্যারেন্ট অবগত থাকার, এবং যাতে আপনি সমস্ত উপায় পুনরুক্তি ডাউন.
এখন আমি আমার পিতা বা মাতা আছে, এবং আমি আমার সবটা পিতামাতার অধিকার পয়েন্টার আছে.
পরিবর্তে, আমরা যদি এই iteratively দিত, তাহলে যখন একটি লুপ সঙ্গে একই ধারণা হতে চাই.
কিন্তু এর পরিবর্তে আমার পিতা বা মাতা পয়েন্টার নিয়ে হচ্ছে,
পরিবর্তে আমার বর্তমান পয়েন্টার জিনিস হবে
সরাসরি যে আমি আমার নতুন নোডের নির্দেশ পরিবর্তন করছি.
আমি তা বাম প্রতি নির্দেশ এর মোকাবেলা করতে হবে না.
আমি তা ডান দিকে ইশারা এর মোকাবেলা করতে হবে না.
এটি শুধু যাই হোক না কেন এই পয়েন্টার, আমি না এটা আমার নতুন নোডের নির্দেশ সেট যাচ্ছি.
প্রত্যেকেরই বুঝতে কীভাবে এটি কাজ করে?
যদি না হয় তাহলে কেন আমরা তা এই ভাবে কাজ করতে চান না,
কিন্তু অন্তত যে একটি সমাধান হিসেবে এই কাজ করে?
[ছাত্র] কোথায় আমরা সত্য না ফিরে?
[Bowden] এটা সম্ভবত ঠিক এখানে.
যদি সঠিকভাবে আমরা এটি সন্নিবেশ, সত্য ফিরে.
অন্যথায়, এখানে নিচে আমরা যাহা সন্নিবেশ করতে চান আয় ফিরে চলুন.
>> এবং কি এই recursive ফাংশন সম্পর্কে বিশেষ?
এটা লেঙ্গুড় recursive, তাই যতদিন আমরা কিছু অপ্টিমাইজেশান সঙ্গে সঙ্কলন,
এটা যে স্বীকার করে এবং আপনি এই থেকে একটি স্ট্যাক ওভারফ্লো কখনও পাবেন,
এমনকি যদি আমাদের গাছ 10,000 বা 10 মিলিয়ন উচ্চতা আছে.
[ছাত্র, অপাচ্য]
[Bowden] আমার মনে হয় এটা Dash এ এটা আছে - বা কি অপ্টিমাইজেশান স্তর
একটি লেঙ্গুড় recursion করা স্বীকৃত যাও জন্য প্রয়োজন বোধ করা হয়.
আমার মনে হয় এটা স্বীকার করে - জিসিসি এবং ঝনঝন
এছাড়াও তাদের অপ্টিমাইজেশান মাত্রা ভিন্ন অর্থ আছে.
আমি এটা DashO 2, নিশ্চিত যে এটি লেঙ্গুড় recursion চিনতে হবে জন্য বলতে চাই.
কিন্তু আমরা - আপনি একটি উদাহরণ Fibonocci বা এরকম কিছু গঠন করা যেতে পারে.
এটা, কারণ এটা যাও গঠন করা কঠিন সহজ সঙ্গে এই পরীক্ষা না
একটি বাইনারি গাছ যে এত বড়.
তবে হাঁ, আমি মনে করি DashO 2, যে
যদি আপনি DashO 2 সঙ্গে সঙ্কলন, এটি লেঙ্গুড় recursion জন্য চেহারা হবে
আশাবাদী হওয়া এবং যে আউট.
এর ফিরে যাওয়া যাক - সন্নিবেশ আক্ষরিক এর শেষ জিনিস এটি প্রয়োজন.
চলুন শুরু করা যাক সন্নিবেশ এখানে উপর ফিরে যান
যেখানে আমরা একই ধারণা করতে যাচ্ছেন.
এটা এখনও সম্পূর্নরূপে হ্যান্ডেল করতে পারবে না খুঁত করতে হবে
যখন রুট নিজেই নাল, বা অতীতের এন্ট্রি হয় নাল,
কিন্তু এর পরিবর্তে একটি ঊর্ধ্বতন পয়েন্টারের সাথে ডিল,
যাক এর পয়েন্টার যাও পালন পয়েন্টার একই যুক্তি প্রযোজ্য.
যদি এখানে আমরা আমাদের নোড ** নেড়িকুত্তা রাখা,
এবং আমরা ট্র্যাক রাখতে অধিকার আর দরকার নেই,
কিন্তু নোড ** নেড়িকুত্তা = & গাছ.
এবং এখন আমাদের সময় লুপ যখন * বর্তমান আছে সমান নাল না হবে.
কি আর বাবা সম্পর্কে অবগত রাখা প্রয়োজন নেই.
কি বাম এবং ডান সম্পর্কে অবগত রাখা প্রয়োজন নেই.
এবং আমি এটা temp কল, কারণ ইতিমধ্যে আমরা temp ব্যবহার করছেন করব.
ঠিক আছে. তাই আপনি যদি (মান> * temp),
তারপর & (* temp) -> ডানে
অন্য temp = & (* temp) -> বাকি.
এবং এখন, এই সময়ে, পরে যখন এই লুপ,
আমি শুধুমাত্র এই কি কারণ হতে পারে এটি সহজ সম্পর্কে iteratively তুলনায় recursively মনে,
কিন্তু পরে যখন এই লুপ,
* Temp হয় পয়েন্টার আমরা পরিবর্তন চাই.
>> আগে আমরা ঊর্ধ্বতন ছিল, এবং আমরা হয়ত বাম পিতা বা মাতা বা অভিভাবক অধিকার পরিবর্তন করতে চান,
কিন্তু যদি আমরা পিতামাতার অধিকার পরিবর্তন করতে চান,
তারপর * temp হয় ঊর্ধ্বতন অধিকার, এবং আমরা এটি সরাসরি পরিবর্তন করতে পারেন.
তাই নিচে এখানে, আমরা * temp = newnode না, এবং যে এটি করতে পারেন.
বিজ্ঞপ্তি, তাই আমরা এই সব করেছিল লাইনের কোড নিতে আউট ছিল.
যাতে সব পিতা বা মাতা যে অতিরিক্ত প্রচেষ্টার ট্র্যাক রাখা.
এখানে, যদি আমরা পয়েন্টার যাও পয়েন্টার ট্র্যাক রাখতে,
এমনকি যদি আমরা এই সব কোঁকড়া ধনুর্বন্ধনী পরিত্রাণ এখন পেতে চেয়েছিল,
এটি খাটো চেহারা.
এটি এখন সঠিক একই সমাধান,
কিন্তু কোড কম লাইন.
একবার আপনি একটি বৈধ সমাধান হিসাবে এই স্বীকৃতি,
এটি এর মত তুলনায় অনেক সহজ কারণ সম্পর্কে যাও, ঠিক আছে,
কেন আমি int-এ ডান দিকে এই পতাকা আছে?
এর অর্থ কি? ওহ, এটা যে বোধক
প্রত্যেক সময় আমি ডানে যান, আমি সেটা সেট প্রয়োজন,
অন্যথায় যদি আমি কি বাকি আমি শূন্য সেট প্রয়োজন.
এখানে, আমি যে কারণে হয় না; এটি শুধু সহজ সম্পর্কে চিন্তা করা.
প্রশ্ন?
[ছাত্র, অপাচ্য] >> হ্যাঁ.
ঠিক আছে, তাই শেষ বিট -
আমি অনুমান একটি দ্রুত এবং সহজ ফাংশন আমরা কি করতে পারি হয়,
let's - একসাথে, আমি অনুমান, এবং চেষ্টা লিখুন একটি ফাংশন রয়েছে
যা কিনা এটি একটি বাইনারি অনুসন্ধান বৃক্ষ না যত্ন.
এই ফাংশন রয়েছে সত্য ফিরে উচিত
এই সাধারণ বাইনারি ট্রির যদি কোথাও হয় মান আমরা খুঁজছেন.
সুতরাং এর প্রথম এটি recursively না দেওয়া এবং তারপর আমরা এটি iteratively করব.
আমরা আসলে এটা একসঙ্গে কাজ করতে পারেন, কারণ এই সত্যিই ছোট হতে যাচ্ছে.
>> না কি আমার বেস ক্ষেত্রে চালু করা?
[ছাত্র, অপাচ্য]
[Bowden] সুতরাং যদি (ট্রি == NULL), তারপর কি?
[ছাত্র] মিথ্যা ফিরুন.
[Bowden] কিছুতে, ভাল, আমি অন্য কোন প্রয়োজন নেই.
যদি আমার অন্যান্য বেস কেস.
[ছাত্র] বৃক্ষ এর মান? >> হ্যাঁ.
তাই আপনি যদি (ট্রি> মান == মান.
উল্লেখ্য, আমরা নোড * যাও ফিরে এসেছি নোড ** গুলি, না?
ধারণকারী একটি নোড ** ব্যবহার করতে হবে না হবে,
যেহেতু আমরা পয়েন্টার পরিবর্তন হয় না.
আমরা ঠিক করছি তাদের ঘোরা.
যদি এমন ঘটে তাহলে, আমরা সত্য ফেরত চান.
অন্যথায় আমরা শিশুদের তর্ক করতে চান.
সুতরাং আমরা কিনা বাম সবকিছু কম সম্পর্কে REASON করতে পারবেন না
এবং ডান সব থেকে বড়.
তাই আমাদের অবস্থা এখানে হবে - অথবা, আমরা কি করতে যাচ্ছি যাও না?
[ছাত্র, অপাচ্য] >> হ্যাঁ.
ফিরে রয়েছে (মান, গাছ> বাম)
অথবা রয়েছে (মান, গাছ-> ডানে). এবং যে এটি.
এবং বিজ্ঞপ্তি কিছু শর্ট - সার্কিট ঘটানো মূল্যায়ন আছে,
যেখানে আমরা যদি বাম গাছ মান খুঁজে এরকম,
এ মুহূর্তে আমরা গাছ তাকান করার প্রয়োজন নেই.
এটা সমগ্র ফাংশন.
এখন এর এটি iteratively না যাক,
যা কম সুন্দর হবে.
আমরা নোড * নেড়িকুত্তা = গাছ স্বাভাবিক শুরু নেব.
যদিও (বর্তমান! = শূন্য).
দ্রুত একটা সমস্যা দেখতে যাচ্ছে.
যদি বর্তমান - আউট এখানে, যদি আমরা এই আউট বিরতি,
তারপর আমরা জিনিস রান আউট করেছি তাকান, তাই মিথ্যা ফিরে.
যদি (বর্তমান-> মান == মান), সত্য ফিরে.
সুতরাং এখন, আমরা একটি জায়গা আছে -
আমরা কিনা আমরা বাম বা ডান যেতে চান না.
সুতরাং ইচ্ছামত, যাক এর ঠিক বামে যান.
আমি একটি বিষয় যেখানে সম্পূর্ণ আমি সবকিছু করেছি পরিত্যক্ত মধ্যে সুস্পষ্টরূপে করেছি রান -
আমি কখনো শুধুমাত্র একটি গাছ বামদিকে চেক করবে.
আমি কিছু যা কিছু অধিকার সন্তানের চেক করবে না.
আমি কিভাবে এই ঠিক করব?
[ছাত্র] আপনি একটি স্ট্যাকের মধ্যে বাম এবং ডান ট্র্যাক রাখা আছে.
[Bowden] হ্যাঁ. সুতরাং এর করা যাক
struct তালিকা, নোড * হবে, এবং তারপর নোড ** পরের?
আমি মনে করি যে কাজ করে জরিমানা.
এখানে - আমরা বাম, বা let's যেতে চান উপর.
Struct তালিকা তালিকা =, এটি শুরু করব
আউট এই struct তালিকা.
* তালিকা = শূন্য. যাতে আমাদের তালিকা সংযুক্ত হতে যাচ্ছে
এর subtrees যে আমরা উপর এড়ানো আছে.
আমরা উতরান এখন বাকি যাচ্ছে,
কিন্তু যেহেতু আমরা অবশ্যম্ভাবীরূপে অধিকার ফিরে আসা প্রয়োজন,
আমরা আমাদের struct তালিকা ভিতরে ডানদিকে রাখা চলুন.
তারপর আমরা new_list বা struct করতে হবে,
struct তালিকা *, new_list = malloc (sizeof (তালিকা)).
আমি ত্রুটি পরীক্ষা যে উপেক্ষা করা যাচ্ছে, কিন্তু করছি আপনি যদি এটি এর নাল দেখুন উচিত.
নোডের মধ্যে এটি নির্দেশ করে যাচ্ছে New_list -
উহু, সে জন্যই আমি এটা চেয়েছিলেন এখানে. এটি একটি দ্বিতীয় struct তালিকা নির্দেশ করে যাচ্ছে.
এটা ঠিক কিভাবে কাজ তালিকা লিঙ্ক.
এটি কোন int লিঙ্ক তালিকা হিসাবে একই
ছাড়া আমরা নোড * সঙ্গে int-প্রতিস্থাপন করছেন.
এটা ঠিক একই.
সুতরাং new_list, আমাদের new_list নোড মান,
যাও নেড়িকুত্তা> সঠিক হতে হবে.
আমাদের মান new_list> পরের আমাদের মূল তালিকা হবে,
এবং তারপর আমরা আমাদের তালিকা new_list নির্দেশ আপডেট চলুন.
>> এখন আমরা কাছে জিনিস উপায় কিছু বাছাই করা প্রয়োজন,
ভালো আমরা সমগ্র বাম subtree traversed আছে.
এখন আমরা স্টাফ বৈঠাচালনা এটি আউট প্রয়োজন,
ভালো নেড়িকুত্তা হয় নাল; আমরা শুধু মিথ্যা ফেরত দিতে চান না.
আমরা এখন বাইরে আমাদের নতুন তালিকা টান মারা চাই.
যারা এই ধরনের সুবিধাজনক উপায় - আসলে ভাল,, এই কাজ করার একাধিক উপায় আছে.
যে কেউ পরামর্শ আছে?
যেখানে আমি এই বা কিভাবে আমি এই কি করা উচিৎ কি করা উচিৎ?
আমরা মাত্র কয়েক মিনিট আছে, কিন্তু কোন পরামর্শ?
পরিবর্তে - একটা উপায়, পরিবর্তে আমাদের শর্ত হচ্ছে যখন,
আমরা কি বর্তমানে করছি নাল নয়,
এর পরিবর্তে আমরা যেতে অবিরত পর্যন্ত আমাদের তালিকা নিজেই নাল চলুন.
তাই আপনি যদি আমাদের তালিকা সমাপ্ত হচ্ছে নাল,
তারপর আমরা জিনিস ফুরিয়েছে জন্য, যাও যাও চেহারা ও অনুসন্ধান.
কিন্তু তার মানে শুধুমাত্র আমাদের তালিকায় সর্বপ্রথম যে জিনিসটি প্রথম নোডের মধ্যে হতে হবে.
আমরা দেখতে আর প্রয়োজন - প্রথম বিষয় হতে হবে.
সুতরাং তালিকা> n আমাদের গাছ হতে হবে.
তালিকা> পরের যাও নাল হবে.
এবং এখন যখন তালিকা আছে সমান নাল না.
বর্তমান আমাদের তালিকা থেকে কিছু উন্মুলিত করা যাচ্ছে.
তাই সমান তালিকা> n যাও নেড়িকুত্তা যাচ্ছে.
এবং তারপর সমান তালিকা> n তালিকা যাওয়া বা তালিকা> পরের হয়.
তাই আপনি যদি বর্তমান মান মান সমান.
এখন আমরা আমাদের অধিকার উভয় পয়েন্টার এবং আমাদের বাম পয়েন্টার যুক্ত করতে পারেন
যতদিন তারা নাল পারব না.
এখানে নিচে, আমি অনুমান আমরা যে কাজ করা উচিত প্রথমে.
যদি (বর্তমান-> ডানে! = শূন্য)
তারপর আমরা আমাদের মধ্যে যে তালিকা নোডের মধ্যে সন্নিবেশ করতে যাচ্ছি.
যদি (বর্তমান-> বাম), এই একটি অতিরিক্ত কাজ অল্প, কিন্তু এটা সূক্ষ্ম.
যদি (বর্তমান-> বাম! = শূন্য),
এবং আমরা আমাদের লিঙ্ক তালিকায় বাম সন্নিবেশ চলুন,
এবং এটা করা উচিত.
আমরা বারবার - যতদিন আমরা আমাদের তালিকার মধ্যে কিছু আছে,
আমরা তাকান অন্য একটি নোড আছে.
সুতরাং আমরা যে নোড তাকান,
আমরা আমাদের পরবর্তী এক তালিকা আগাম.
যদি যে নোড হয় মান আমরা খুঁজছেন, আমরা সত্য ফিরে আসতে পারেন.
অন্য উভয় আমাদের বাম এবং ডান subtrees সন্নিবেশ,
যতদিন তারা নাল পারব না, আমাদের মধ্যে তালিকা
যাতে আমরা তাদের উপর অবশ্যম্ভাবী যান.
সুতরাং যদি তারা, নাল না
যদি আমাদের রুট পয়েন্টার দুটি জিনিস জোরাল,
তারপর প্রথমে আমরা কিছু টানা যাতে আমাদের তালিকা সমাপ্ত হচ্ছে নাল.
এবং তারপর আমরা দুটি জিনিস রাখা ফিরে, তাই এখন আমাদের তালিকার মাপ 2 হয়.
তারপর আমরা লুপ ফিরে আপ যাচ্ছে এবং আমরা ঠিক করছি বৈঠাচালনা চলুন,
আসুন আমাদের রুট নোড বাম পয়েন্টার বলে,.
এবং শুধুমাত্র যে ঘটছে রাখা হবে; আমরা আপ সবকিছু উপর looping শেষ করব.
>> উল্লেখ্য, এই ছিল উল্লেখযোগ্যভাবে আরো জটিল
মধ্যে recursive সমাধান.
এবং আমি একাধিক বার বলেছেন করেছি
যে সাধারণত recursive সমাধান সাধারণ মধ্যে রয়েছে সমাধান পুনরাবৃত্ত সঙ্গে অনেক.
এখানে এটা ঠিক কি recursive সমাধান করছে.
শুধু পরিবর্তন আছে যা পরিবর্তে পরোক্ষভাবে স্ট্যাক ব্যবহার, প্রোগ্রাম স্ট্যাক, হয়
কি নোড হিসাবে আপনি এখনও যান আপনার প্রয়োজন সম্পর্কে অবগত থাকার উপায়,
এখন আপনি বর্ণিতভাবে যুক্ত তালিকা ব্যবহার আছে.
উভয় ক্ষেত্রেই আপনি অবগত থাকার হয় তখনও নোড প্রয়োজন দেখেছে.
এটি recursive ক্ষেত্রে শুধু সহজ কারণ একটি স্ট্যাক
আপনার জন্য প্রোগ্রাম স্ট্যাক হিসাবে প্রয়োগ করা হয়.
উল্লেখ্য, এই লিঙ্ক তালিকা, এটি একটি স্ট্যাক.
যাই হোক না কেন আমরা ঠিক স্ট্যাক করা
হয় অবিলম্বে কি আমরা স্ট্যাকের বৈঠাচালনা বন্ধ পরবর্তী যান চলুন.
আমাদের সময় শেষ হয়ে গেছে, কিন্তু কোন প্রশ্ন?
[ছাত্র, অপাচ্য]
[Bowden] হ্যাঁ. সুতরাং আমরা যদি আমাদের যুক্ত তালিকা আছে,
বর্তমান এই লোক নির্দেশ যাচ্ছে,
এবং এখন আমরা আমাদের যুক্ত তালিকা করছি এই লোক মনোনিবেশ আগুয়ান.
আমরা যে লাইন সংযুক্ত তালিকা উপর ঢোঁড়ন করছি.
এবং তারপর আমি অনুমান আমরা আমাদের যুক্ত তালিকা এবং স্টাফ মুক্ত উচিত
একবার আগে ফিরে সত্য বা মিথ্যা, আমরা প্রয়োজন
আমাদের সাথে লিঙ্ক তালিকা উপর বারবার করা এবং সবসময় নিচে এখানে, আমি অনুমান,
যদি আমরা বর্তমান অধিকার সমান নয়, এটি, যোগ, তাই এখন আমরা মুক্ত করতে চান
বর্তমান কারণ, ভাল, আমরা তালিকা সম্পর্কে সম্পূর্ণরূপে কি ভুলে গেলে? হাঁ.
তাই কি আমরা এখানে কাজ করতে চান.
কোথায় পয়েন্টার?
তারপর বর্তমান ছিল - আমরা চাই একটি struct তালিকায় * 10 তালিকা সমান পরের.
বিনামূল্যে তালিকা, তালিকা = temp.
এবং ক্ষেত্রে যেখানে আমরা ফিরে সত্য, আমরা বারবার করা প্রয়োজন
উপর আমাদের জিনিস যুক্ত তালিকা freeing বাকি.
recursive সমাধান সম্পর্কে চমৎকার জিনিস জিনিস হয় freeing
শুধু স্ট্যাকের যা আপনার জন্য ঘটবে বন্ধ পপিং factorings মানে.
তাই আমরা কিছু হার্ড দী সম্পর্কে ভাবা কোড 3 লাইনের মত যে এর থেকে চলে গেছে করেছি
কিছু যে হয় উল্লেখযোগ্যভাবে অনেক হার্ড দী সম্পর্কে ভাবা লাইনের কোড.
কোন প্রশ্ন?
ঠিক আছে. আমরা ভাল. বিদায়!
[CS50.TV]