একটি বাইনারি ট্রি দেওয়া আছে। ট্রির সব নোডের ডেটার গুণফল বের করতে হবে।
বাইনারি ট্রিতে রুট নোড থাকে, প্রতিটি নোডের ডেটা, বাম ও ডান পয়েন্টার থাকে। ট্রাভার্সালের সময় রিকারসিভলি বাম ও ডান সাবট্রি ঘুরে গুণফল বের করা যায়।
ইনপুট (ট্রি কাঠামো চিত্রে দেখানো আছে)
আউটপুট
Nodes: 10, 20, 30, 40, 50, 60 Product = 720000000
পদ্ধতি
- নোড ডেটা ইনপুট/ট্রি তৈরি করুন।
- রুট থেকে রিকারসিভলি বাম ও ডান সাবট্রি ট্রাভার্স করুন।
- প্রতিটি নোডের ডেটা গুণ করুন।
- ফলাফল প্রিন্ট করুন।
এলগরিদম
Start
Step 1 → নোড স্ট্রাকচার: data, left, right
Step 2 → new_node(int data): নতুন নোড তৈরি
Step 3 → int node_product(node* root)
if root == NULL return 1
return root->data * node_product(root->left) * node_product(root->right)
Step 4 → main(): ট্রি তৈরি, node_product() কল, ফলাফল প্রিন্ট
Stop
উদাহরণ কোড
#include <iostream>
using namespace std;
struct node{
int data;
node *left, *right;
};
node* new_node(int data){
node* temp = new node();
temp->data = data;
temp->left = temp->right = NULL;
return temp;
}
int node_product(node* root){
if (root == NULL) return 1;
return (root->data * node_product(root->left) * node_product(root->right));
}
int main(){
node* root = new_node(10);
root->left = new_node(20);
root->right = new_node(30);
root->left->left = new_node(40);
root->left->right = new_node(50);
root->right->left = new_node(60);
int product = node_product(root);
cout << "Product of all nodes: " << product << endl;
return 0;
}
আউটপুট
Product of all the nodes is: 720000000