দুটি বাইনারি ট্রি দেওয়া আছে। লক্ষ্য হল সেগুলো একসাথে মার্জ করা। যদি দুটি নোড ওভারল্যাপ করে (উভয়ই নাল না হয়), তবে মানগুলো যোগ করা হয়। অন্যথায় নন-নাল নোডই নতুন ট্রিতে থাকে।
রিকার্সিভ পদ্ধতি: উভয় নোড নাল হলে নাল, একটি নাল হলে অন্যটি, উভয়ই থাকলে মান যোগ করে বাম ও ডান সাবট্রি রিকার্শিভলি মার্জ।
ট্রি ১ এবং ট্রি ২ (চিত্রে দেখানো)
মার্জ করা ট্রির ইনঅর্ডার আউটপুট: 5 4 4 3 5 7
#includeusing namespace std; class TreeNode { public: int val; TreeNode *left, *right; TreeNode(int v){ val = v; left = right = NULL; } }; void inord(TreeNode *root) { if (root != NULL) { inord(root->left); cout << root->val << " "; inord(root->right); } } class Solution { public: TreeNode* solve(TreeNode* n1, TreeNode* n2) { if(!n1 && n2) return n2; else if(!n2 && n1) return n1; else if(!n1 && !n2) return NULL; n1->val += n2->val; n1->left = solve(n1->left, n2->left); n1->right = solve(n1->right, n2->right); return n1; } }; int main(){ TreeNode *root1 = new TreeNode(1); root1->left = new TreeNode(3); root1->right = new TreeNode(2); root1->left->left = new TreeNode(5); TreeNode *root2 = new TreeNode(2); root2->left = new TreeNode(1); root2->right = new TreeNode(3); root2->left->right = new TreeNode(4); root2->right->right = new TreeNode(7); Solution ob; TreeNode *root_res = ob.solve(root1, root2); inord(root_res); return 0; }
মার্জ করা ট্রির ইনঅর্ডার ট্রাভার্সাল:
5 4 4 3 5 7