সুতরাং আপনি কিছু প্রাথমিক কম্পিউটার বিজ্ঞান ধারণা পড়ার আগে।
- একটি বাইনারি ট্রি একটি গতিশীল বরাদ্দ কাঠামো (সাধারণত অর্ডার করা স্টোরেজের জন্য ব্যবহৃত হয়)।
- বাইনারি গাছগুলির প্রকৃতির কারণ এটি সাধারণত পুনরাবৃত্ত হয়;
লুপিংয়ের দুটি উপায় থাকা অবস্থায় লিনিয়ার ট্রভারসাল (লুপের মাধ্যমে) প্রাকৃতিক নয় not- রিকার্সিভ: এর অর্থ এমন একটি ফাংশন যা নিজেকে কল করে।
- পুরানো ফ্যাশনযুক্ত ভাষায়, মেমরি পরিচালনার জন্য ম্যানুয়াল মেমরি পরিচালনা প্রয়োজন requires
- ম্যানুয়াল: মানে এটি আপনার নিজেরাই করতে হবে।
- আপনি যখন ম্যানুয়াল মেমরি পরিচালনা করবেন তখন আপনাকে গাছের প্রতিটি সদস্যকে মুক্ত করার জন্য অন্তর্নিহিত সিস্টেমটিকে প্রকৃতপক্ষে জিজ্ঞাসা করতে হবে।
- বিনামূল্যে: বিশ্বব্যাপী স্মৃতি পুনরুদ্ধার করুন যাতে এটি পুনরায় ব্যবহার করা যায় এবং আপনার স্মৃতিশক্তি শেষ হয় না।
- নিখরচায়: এটি ফাংশনটিতে কল করে
free()
এবং আপনি পুনরুদ্ধার করতে চান সেই পয়েন্টারটি পাস করার মাধ্যমে এটি করা হয়। - পয়েন্টার: এটি ভার্চুয়াল স্টিকের মতো। শেষে স্মৃতি। আপনি যখন মেমরি চাইবেন তখন আপনাকে একটি পয়েন্টার (ভার্চুয়াল স্টিক) দেওয়া হবে যার মেমরি রয়েছে has আপনার হয়ে গেলে আপনি পয়েন্টারটি ফিরিয়ে দেন (ভার্চুয়াল স্টিক)।
পুনরাবৃত্ত সমাধান:
freeTree(Node* node)
{
freeTree(node->left);
freeTree(node->right);
free(node);
}
তারপরে সমস্যাটি হ'ল পুনরাবৃত্তির অর্থ আপনি একই ক্রিয়াকলাপ বারবার কল করছেন। এটি স্ট্যাক বৃদ্ধি করে। স্ট্যাক বাড়ানো আরও মেমরি ব্যবহার করে। আপনি গাছকে মুক্ত করার কারণটি হ'ল আপনি আরও বেশি মেমরি ব্যবহার করে মেমরি ফিরিয়ে নিতে চান তা প্রতিরক্ষামূলক (এমনকি যদি আপনি উভয় স্মৃতি মেমরি ফিরে পান)।
শেষ পর্যন্ত প্রশ্ন:
সুতরাং উপরের পুনরাবৃত্ত সংস্করণটিকে রৈখিক সমাধানে রূপান্তরিত করার আশপাশে সমস্যা কেন্দ্রগুলি (যাতে আপনার স্মৃতি ব্যবহার করতে না হয়)।
নোড টাইপ দিন
typedef struct Node Node;
struct Node
{
Node* left;
Node* right;
};
এই নোডগুলির একটি গাছ মুক্ত করার জন্য একটি ফাংশন লিখুন।
সীমাবদ্ধতা:
- পুনরাবৃত্তি ব্যবহার করতে পারবেন না (এমনকি অপ্রত্যক্ষভাবেও নয়)
ট্র্যাকিংয়ের জন্য কোনও গতিশীল স্থান বরাদ্দ করতে পারে না।
দ্রষ্টব্য একটি ও (এন) সমাধান আছে
বিজয়ী:
- সেরা জটিলতা।
- টাই ব্রেক 1: প্রথম জমা দেওয়া
- টাই ব্রেক 2: স্বল্প পরিমাণে অক্ষর।