এই সমস্যায় একটি বাইনারি ট্রি দেওয়া আছে। আমাদের বাইনারি ট্রির সব লিফ নোড বাম থেকে ডান ইটেরেটিভ পদ্ধতিতে প্রিন্ট করতে হবে।
উদাহরণ
ইনপুট -

আউটপুট - 1 4 7
ইটেরেটিভ পদ্ধতিতে এই সমস্যাটি সমাধানের জন্য ডেপথ-ফার্স্ট সার্চ (DFS) ব্যবহার করা হবে। ট্রি ট্রাভার্স করার জন্য রুট নোড থেকে শুরু করে চেক করা হবে যে এটি লিফ নোড কিনা। যদি হয় তবে নোডটি প্রিন্ট করা হবে অন্যথায় এর চাইল্ড সাবট্রিগুলো ট্রাভার্স করে সব লিফ নোড খুঁজে বের করা হবে।
বাস্তবায়ন
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node *left, *right;
};
Node* insertNode(int data) {
Node *temp = new Node;
temp->data = data;
temp->left = temp->right = NULL;
return temp;
}
void printLTRLeafNodes(Node *root) {
if (!root)
return;
if (!root->left && !root->right) {
cout << root->data << "\t";
return;
}
if (root->left)
printLTRLeafNodes(root->left);
if (root->right)
printLTRLeafNodes(root->right);
}
int main() {
Node *root = insertNode(21);
root->left = insertNode(5);
root->right = insertNode(36);
root->left->left = insertNode(2);
root->right->left = insertNode(13);
root->right->right = insertNode(4);
root->right->left->left = insertNode(76);
root->right->left->right = insertNode(9);
root->right->right->left = insertNode(17);
root->right->right->right = insertNode(2);
cout << "Leaf Nodes of the tree from left to right are :\n";
printLTRLeafNodes(root);
return 0;
}
আউটপুট
Leaf Nodes of the tree from left to right are : 2 76 9 17 2