কম্পিউটার

C++ এ বাইনারি ট্রিতে প্রদত্ত নোডের পূর্বপুরুষ মুদ্রণ করুন


এই সমস্যায়, আমাদের একটি বাইনারি ট্রি দেওয়া হয়েছে এবং আমাদের একটি বাইনারি গাছে একটি নোডের পূর্বপুরুষ প্রিন্ট করতে হবে৷

বাইনারি ট্রি একটি বিশেষ গাছ যার প্রতিটি নোডে সর্বোচ্চ দুটি চাইল্ড নোড থাকে। সুতরাং, প্রতিটি নোড হয় একটি লিফ নোড বা একটি বা দুটি চাইল্ড নোড রয়েছে৷

উদাহরণ,

C++ এ বাইনারি ট্রিতে প্রদত্ত নোডের পূর্বপুরুষ মুদ্রণ করুন

পূর্বপুরুষ একটি বাইনারি গাছের একটি নোড হল একটি নোড যা প্রদত্ত নোডের উপরের স্তরে থাকে৷

পূর্বপুরুষ নোড -

এর একটি উদাহরণ নেওয়া যাক

C++ এ বাইনারি ট্রিতে প্রদত্ত নোডের পূর্বপুরুষ মুদ্রণ করুন

এই বাইনারি গাছে 3 মান সহ একটি নোডের পূর্বপুরুষ হল 8,

এই সমস্যা সমাধানের জন্য, আমরা রুট নোড থেকে লক্ষ্য নোডে যাবো। বাইনারি গাছে ধাপে ধাপে নিচের দিকে। এবং পথে আসা সমস্ত নোডগুলি প্রিন্ট করুন৷

উদাহরণ

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct node{
   int data;
   struct node* left;
   struct node* right;
};
bool AncestorsNodes(struct node *root, int target){
   if (root == NULL)
      return false;
   if (root->data == target)
      return true;
   if ( AncestorsNodes(root->left, target) || AncestorsNodes(root->right, target) ){
      cout << root->data << " ";
      return true;
   }
   return false;
}
struct node* insertNode(int data){
   struct node* node = (struct node*) malloc(sizeof(struct node));
   node->data = data;
   node->left = NULL;
   node->right = NULL;
   return(node);
}
int main(){
   struct node *root = insertNode(10);
   root->left = insertNode(6);
   root->right = insertNode(13);
   root->left->left = insertNode(3);
   root->left->right = insertNode(8);
   root->right->left = insertNode(12);
   cout<<"Ancestor Nodes are " ;
   AncestorsNodes(root, 8);
   getchar();
   return 0;
}

আউটপুট

Ancestor Nodes are 6 10

  1. একটি বাইনারি গাছের সমস্ত অভ্যন্তরীণ নোড C++ এ প্রিন্ট করুন

  2. C++ এ একটি বাইনারি ট্রিতে সমস্ত k-সম পথ প্রিন্ট করুন

  3. C++ এ বাইনারি ট্রিতে রুট থেকে প্রদত্ত নোডের দূরত্ব খুঁজুন

  4. একটি প্রদত্ত বাইনারি ট্রি C++ এ SumTree কিনা তা পরীক্ষা করুন