কম্পিউটার

C++ এ বাইনারি ট্রিতে একটি নির্দিষ্ট যোগফল সহ রুট থেকে সমস্ত পাথ প্রিন্ট করুন


এই সমস্যায়, আমাদেরকে একটি বাইনারি ট্রি এবং একটি যোগফল S দেওয়া হয়েছে। এবং আমাদেরকে গাছের যেকোন নোডের রুট থেকে শুরু করে পথ খুঁজে বের করতে হবে, যা প্রদত্ত যোগফলের সমান দেয়।

ইনপুট

C++ এ বাইনারি ট্রিতে একটি নির্দিষ্ট যোগফল সহ রুট থেকে সমস্ত পাথ প্রিন্ট করুন

Sum = 14
Output : path : 4 10
4 3 7

এই সমস্যার সমাধান খুঁজতে, আমাদের বাইনারি গাছের প্রি-অর্ডার ট্রাভার্সাল খুঁজে বের করতে হবে। এবং তারপরে সেই পথটি সন্ধান করুন যা প্রদত্ত যোগফলের সাথে যোগ করে।

উদাহরণ

#include<bits/stdc++.h>
using namespace std;
struct Node{
   int key;
   struct Node *left, *right;
};
Node* insertNode(int key){
   Node* temp = new Node;
   temp->key = key;
   temp->left = temp->right = NULL;
   return (temp);
}
void printPathsUtilSum(Node* curr_node, int sum, int
sum_so_far, vector<int> &path){
   if (curr_node == NULL)
      return;
   sum_so_far += curr_node->key;
   path.push_back(curr_node->key);
   if (sum_so_far == sum ){
      for (int i=0; i<path.size(); i++)
         cout<<path[i]<<"\t";
      cout<<endl;
   }
   if (curr_node->left != NULL)
      printPathsUtilSum(curr_node->left, sum,
   sum_so_far, path);
   if (curr_node->right != NULL)
      printPathsUtilSum(curr_node->right, sum,
   sum_so_far, path);
   path.pop_back();
}
void pathWithSum(Node *root, int sum){
   vector<int> path;
   printPathsUtilSum(root, sum, 0, path);
}
int main (){
   Node *root = insertNode(4);
   root->left = insertNode(10);
   root->right = insertNode(3);
   root->right->left = insertNode(7);
   root->right->right = insertNode(1);
   root->left->left = insertNode(8);
   root->left->right = insertNode(6);
   int sum = 14;
   cout<<"Paths with the given sum are : "<<endl;
   pathWithSum(root, sum);
   return 0;
}

আউটপুট

প্রদত্ত যোগফল সহ পাথগুলি হল −

4 10
4 3 7

  1. C++ এ বাইনারি সার্চ ট্রির সমস্ত বিজোড় নোড প্রিন্ট করুন

  2. C++ এ আপেক্ষিক অবস্থান সহ সমস্ত রুট থেকে পাতার পাথ প্রিন্ট করুন

  3. C++ এ প্রদত্ত নিখুঁত বাইনারি গাছের সমস্ত নোডের সমষ্টি খুঁজুন

  4. C++ প্রোগ্রামিং-এ বাইনারি ট্রি-তে প্রথম সংক্ষিপ্ত রুট টু লিফ পাথ প্রিন্ট করুন।