কম্পিউটার

C++ এ বাইনারি গাছের গভীরতম বাম পাতার নোড


এই টিউটোরিয়ালে, আমরা বাইনারি গাছের গভীরতম বাম পাতার নোড খুঁজে বের করতে যাচ্ছি। চলুন বাইনারি ট্রি দেখি।

   A
      B    C
D       E       F
                     G

আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

  • চার, বাম এবং ডান পয়েন্টার দিয়ে একটি নোড স্ট্রাকট লিখুন।

  • ডামি ডেটা দিয়ে বাইনারি ট্রি শুরু করুন।

  • বাইনারি ফাংশনে গভীরতম বাম নোড খুঁজে পেতে একটি পুনরাবৃত্ত ফাংশন লিখুন। গভীরতম নোড সংরক্ষণ করতে তিনটি আর্গুমেন্ট রুট নোড, isLeftNode এবং ফলাফল পয়েন্টার লাগে৷

  • যদি বর্তমান নোড বাকি থাকে এবং লিফ নোড হয়, তাহলে বর্তমান নোডের সাথে ফলাফল নোড আপডেট করুন।

  • বাম সাব ট্রিতে রিকার্সিভ ফাংশন কল করুন।

  • ডান সাব ট্রিতে রিকার্সিভ ফাংশন কল করুন।

  • যদি ফলাফলের নোডটি শূন্য হয়, তাহলে এমন কোনো নোড নেই যা আমাদের শর্ত পূরণ করে।

  • অন্যথায় ফলাফল নোডে ডেটা প্রিন্ট করুন।

উদাহরণ

আসুন কোডটি দেখি।

#include <bits/stdc++.h>
using namespace std;
struct Node {
   char data;
   struct Node *left, *right;
};
Node *addNewNode(char data) {
   Node *newNode = new Node;
   newNode->data = data;
   newNode->left = newNode->right = NULL;
   return newNode;
}
void getDeepestLeftLeafNode(Node *root, bool isLeftNode, Node **resultPointer) {
   if (root == NULL) {
      return;
   }
   if (isLeftNode && !root->left && !root->right) {
      *resultPointer = root;
      return;
   }
   getDeepestLeftLeafNode(root->left, true, resultPointer);
   getDeepestLeftLeafNode(root->right, false, resultPointer);
}
int main() {
   Node* root = addNewNode('A');
   root->left = addNewNode('B');
   root->right = addNewNode('C');
   root->left->left = addNewNode('D');
   root->right->left = addNewNode('E');
   root->right->right = addNewNode('F');
   root->right->left->right = addNewNode('G');
   Node *result = NULL;
   getDeepestLeftLeafNode(root, false, &result);
   if (result) {
      cout << "The deepest left child is " << result->data << endl;
   }
   else {
      cout << "There is no left leaf in the given tree" << endl;
   }
   return 0;
}

আউটপুট

আপনি যদি উপরের প্রোগ্রামটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

The deepest left child is D

উপসংহার

টিউটোরিয়ালে আপনার কোন প্রশ্ন থাকলে মন্তব্য বিভাগে উল্লেখ করুন।


  1. C++ এ একটি বাইনারি ট্রিতে নন-লিফ নোড গণনা করুন

  2. C++ এ সর্বাধিক বাইনারি ট্রি

  3. C++ এ ডান থেকে বামে একটি বাইনারি গাছের সমস্ত পাতার নোড প্রিন্ট করুন

  4. C++ এ একটি বাইনারি গাছের নিকটতম পাতাটি খুঁজুন