কম্পিউটার টিউটোরিয়াল

সি++-এ কমপ্লিট বাইনারি ট্রির মিরর ইমেজ নোডগুলোর ইনঅর্ডার যোগফল


একটি কমপ্লিট বাইনারি ট্রি দেওয়া আছে। লেফট সাবট্রির ইনঅর্ডার ট্রাভার্সাল করুন এবং প্রতিটি নোডের সাথে তার মিরর ইমেজ নোডের মান যোগ করুন।

ইনপুট (ট্রি চিত্রে)

আউটপুট

9 9 17 2

ব্যাখ্যা — লেফট ইনঅর্ডার: 5-7-8-1। মিরর যোগ: 5+4=9, 7+2=9, 8+9=17, 1+1=2।

পদ্ধতি

  • দুই পয়েন্টার: `root` (লেফট সাবট্রি) এবং `rootMirror` (রাইট সাবট্রি)।
  • ইনঅর্ডার ট্রাভার্সাল: `printMirrorSum(root->left, rootMirror->right)` → প্রিন্ট যোগফল → `printMirrorSum(root->right, rootMirror->left)`।
  • বেস কেস: লিফ নোডে রিটার্ন।

উদাহরণ কোড

#include <iostream> 
using namespace std; 

struct Node{
    int data;
    Node *left, *right;
    Node(int d){ data=d; left=right=NULL; }
};

void printMirrorSum(Node* root, Node* rootMirror){
    if(root->left == NULL && rootMirror->right == NULL) return;
    printMirrorSum(root->left, rootMirror->right);
    cout << (root->left->data + rootMirror->right->data) << endl;
    printMirrorSum(root->right, rootMirror->left);
}

int main(){
    Node* root = new Node(1);
    root->left = new Node(7); root->right = new Node(2);
    root->left->left = new Node(5); root->left->right = new Node(8);
    root->right->left = new Node(9); root->right->right = new Node(4);
    cout << "Mirror sums:\n";
    printMirrorSum(root, root);
    if(root) cout << (root->data + root->data);
    return 0;
}

আউটপুট

Mirror sums:
9
9
17
2

  1. C++-এ বাইনারি ট্রির সব ইন্টারনাল নোড প্রিন্ট করা

  2. বাইনারি ট্রিতে নিকটতম লিফ নোড খুঁজে বের করা (C++)

  3. C++-এ পারফেক্ট বাইনারি ট্রি (Perfect Binary Tree) সকল নোডের যোগফল নির্ণয়

  4. C++ প্রোগ্রামিং-এ বাইনারি ট্রি নোডগুলো প্রিন্ট করা যেন তারা লিফ নোড হয়