একটি কমপ্লিট বাইনারি ট্রি দেওয়া আছে। লেফট সাবট্রির ইনঅর্ডার ট্রাভার্সাল করুন এবং প্রতিটি নোডের সাথে তার মিরর ইমেজ নোডের মান যোগ করুন।
ইনপুট (ট্রি চিত্রে)
আউটপুট
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