মডিউল ১৯-১ঃ Is Node Present (Coding Ninjas)
প্রবলেম লিংকঃ Is Node Present? - Coding Ninjas
প্রবলেম স্টেটমেন্টঃ একটি ট্রি এবং একটি ভেলু দেওয়া থাকবে। বের করতে হবে ওই ট্রিতে ওই ভেলু দিয়ে কোন নোড আছে কিনা। থাকলে ট্রু রিটার্ন করতে হবে আর না থাকলে ফলস রিটার্ন করতে হবে।
সল্যুশনঃ এরেতে আমরা যেভাবে ভেলু আছে নাকি নেই চেক করতাম প্রথম থেকে শেষ পর্যন্ত ট্রাভারস করে। ট্রিতেও সেইম করব। আমরা ট্রি এর রুট থেকে সবগুলো নোডে যাব। যেয়ে চেক করে দেখব ভেলুটি আছে কিনা। থাকলে ট্রু রিটার্ন করে দিব আর না থাকলে ফলস রিটার্ন করে দিব। এক্ষেত্রে ট্রাভারস করার জন্য আমরা সিম্পলি রিকারশন ব্যাবহার করতে পারি।
bool isNodePresent(BinaryTreeNode<int> *root, int x)
{
if (root == NULL) // নালে চলে আসলে রিকারশন থামিয়ে দিচ্ছি।
return false;
if (root->data == x) // যদি ভেলুটি পেয়ে যাই তাহলে ট্রু রিটার্ন করছি।
return true;
bool l = isNodePresent(root->left, x); // আর যদি রুটে ভেলু না পাই তাহলে শুরুতে রিকারশনের মাধ্যমে লেফটে যাচ্ছি।
bool r = isNodePresent(root->right, x); // তারপর রাইটে যাচ্ছি।
return (l || r); // লেফট এবং রাইট থেকে যেই বুলিয়ান ভেলু রিটার্ন আসছে তা অর করে রিটার্ন করছি। তাহলে যেকোন একটি থেকে ট্রু আসলেই আন্সার হিসেবে ট্রু রিটার্ন করবে।
}
Last updated