কম্পিউটার টিউটোরিয়াল

C++-এ রিকার্শন ছাড়া ইনঅর্ডার ট্রি ট্রাভার্সাল (Inorder Tree Traversal without Recursion)

ইনঅর্ডার ট্রাভার্সাল (LNR)

বাইনারি ট্রি-এ ইনঅর্ডার ট্রাভার্সাল মানে: বাম সাবট্রি → রুট → ডান সাবট্রি। এটি বাইনারি সার্চ ট্রিতে সোর্টেড আউটপুট দেয়। রিকার্শন না ব্যবহার করে স্ট্যাক (Stack) দিয়ে ইটারেটিভলি করা যায়।

অ্যালগরিদম

Function inOrder(root):
    stack s
    current = root
    while (current != NULL OR !s.empty()):
        while (current != NULL):
            s.push(current)
            current = current->left
        current = s.top(); s.pop()
        print current->data
        current = current->right

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

struct Node {
    int data;
    Node *left, *right;
    Node(int d) : data(d), left(NULL), right(NULL) {}
};

void inOrder(Node *root) {
    stack<Node*> s;
    Node *curr = root;
    while (curr != NULL || !s.empty()) {
        while (curr != NULL) {
            s.push(curr);
            curr = curr->left;
        }
        curr = s.top(); s.pop();
        cout << curr->data << " ";
        curr = curr->right;
    }
}

int main() {
    Node *root = new Node(7);
    root->left = new Node(6);
    root->right = new Node(2);
    root->left->left = new Node(1);
    root->left->right = new Node(9);
    inOrder(root); // আউটপুট: 1 6 9 7 2
    return 0;
}

আউটপুট

1 6 9 7 2

সময় জটিলতা: O(n), স্পেস জটিলতা: O(h) (h = ট্রির উচ্চতা)।

  1. রিকার্শন ও স্ট্যাক ছাড়া বাইনারি ট্রির পোস্টঅর্ডার ট্রাভার্সাল (C++)

  2. C++-এ রিকার্শন ছাড়া N-এরি ট্রির প্রিঅর্ডার ট্রাভার্সাল (Preorder Traversal of N-ary Tree Without Recursion)

  3. বাইসেকশন মেথড (Bisection Method) C++ প্রোগ্রাম

  4. বাইনারি ট্রির ইন-অর্ডার রিকার্সিভ ট্রাভার্সালের C++ প্রোগ্রাম