এখানে আমরা দেখব কিভাবে একটি বাইনারি ট্রি সম-বৃক্ষ কিনা তা পরীক্ষা করা যায়। এখন প্রশ্ন হল সম-বৃক্ষ কি? একটি সম-বৃক্ষ হল একটি বাইনারি গাছ যেখানে একটি নোড তার সন্তানদের সমষ্টির মান ধরে রাখে। গাছের মূলে এর নীচে থাকা সমস্ত উপাদানের সম্পূর্ণ যোগফল থাকবে। এটি সম-বৃক্ষের একটি উদাহরণ -
এটি পরীক্ষা করার জন্য, আমরা একটি সহজ কৌশল অনুসরণ করব, আমরা বাম এবং ডান সাবট্রি উপাদানগুলির যোগফল খুঁজে পাব যদি যোগফলের মান মূলের সমান হয়, তবে সেটি হল যোগ-বৃক্ষ। এটি একটি পুনরাবৃত্তিমূলক পদ্ধতি হবে৷
৷উদাহরণ
#include <bits/stdc++.h> using namespace std; class node { public: int data; node* left, *right; }; int sum_of_nodes(node *root) { if(root == NULL) return 0; return sum_of_nodes(root->left) + root->data + sum_of_nodes(root->right); } int isSumTree(node* node) { int left_sum, right_sum; if(node == NULL || (node->left == NULL && node->right == NULL)) return 1; left_sum = sum_of_nodes(node->left); right_sum = sum_of_nodes(node->right); if((node->data == left_sum + right_sum) && isSumTree(node->left) && isSumTree(node->right)) return 1; return 0; } node* getNode(int data) { node* newNode = new node(); newNode->data = data; newNode->left = newNode->right = NULL; return newNode; } int main() { node *root = getNode(26); root->left = getNode(10); root->right = getNode(3); root->left->left = getNode(4); root->left->right = getNode(6); root->right->right = getNode(3); if(isSumTree(root)) cout << "The tree is Sum Tree"; else cout << "The tree is not a Sum Tree"; }
আউটপুট
The tree is Sum Tree