একটি বাইনারি ট্রি দেওয়া আছে। শুধু লিফ নোডগুলো (যাদের বাম ও ডান চাইল্ড নেই) এর ডেটার গুণফল বের করতে হবে।
ইনপুট (ট্রি চিত্রে)
আউটপুট
Leaf nodes: 23, 34, 25 Product = 19550
পদ্ধতি
- ট্রি তৈরি করুন।
- রিকারসিভলি ট্রাভার্স করুন।
- যখন `!root->left && !root->right` (লিফ নোড), তখন `product *= root->data`।
- ফলাফল প্রিন্ট করুন।
এলগরিদম
Start
Step 1 → নোড স্ট্রাকচার: data, left, right
Step 2 → new_node(int data): নোড তৈরি
Step 3 → void leaf(node* root, int &product)
if !root return
if !root->left && !root->right
product *= root->data
leaf(root->left, product)
leaf(root->right, product)
Step 4 → main(): ট্রি তৈরি, product=1, leaf() কল, প্রিন্ট
Stop
উদাহরণ কোড
#include <bits/stdc++.h>
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;
}
void leaf(node* root, int &product){
if (!root) return;
if (!root->left && !root->right)
product *= root->data;
leaf(root->left, product);
leaf(root->right, product);
}
int main(){
node* root = new_node(10);
root->left = new_node(20);
root->left->left = new_node(30);
root->left->right = new_node(40);
root->right = new_node(50);
root->right->right = new_node(60);
root->right->left = new_node(70);
int product = 1;
leaf(root, product);
cout << "Product of leaf nodes: " << product;
return 0;
}
আউটপুট
Product of leaf nodes: 5040000