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

সি++-এ বাইনারি ট্রির ডায়াগোনাল ট্রাভার্সালে K-তম নোড বের করা

এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখব যা বাইনারি ট্রির ডায়াগোনাল ট্রাভার্সালে K-তম নোড বের করবে।

সমস্যা সমাধানের ধাপসমূহ

  • নমুনা ডেটা দিয়ে বাইনারি ট্রি ইনিশিয়ালাইজ করুন।
  • সংখ্যা k ইনিশিয়ালাইজ করুন।
  • কিউ (queue) ডেটা স্ট্রাকচার ব্যবহার করে বাইনারি ট্রিটি ডায়াগোনালি ট্রাভার্স করুন।
    • প্রতিটি নোডে k-এর মান ১ কমান।
    • যখন k শূন্য হয়, তবে সেই নোডটি রিটার্ন করুন।
  • যদি এমন কোনো নোড না থাকে, তবে -1 রিটার্ন করুন।

উদাহরণ কোড

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

struct Node {
    int data;
    Node *left, *right;
};

Node* getNewNode(int data) {
    Node* node = (Node*)malloc(sizeof(Node));
    node->data = data;
    node->left = node->right = NULL;
    return node;
}

int findDiagonalKthElement(Node* root, int k) {
    if (root == NULL || k == 0) {
        return -1;
    }
    int result = -1;
    queue<Node*> q;
    q.push(root);
    q.push(NULL);
    while (!q.empty()) {
        Node* temp = q.front();
        q.pop();
        if (temp == NULL) {
            if (q.empty()) {
                if (k == 0) {
                    return result;
                } else {
                    break;
                }
            }
            q.push(NULL);
        } else {
            while (temp) {
                if (k == 0) {
                    return result;
                }
                k--;
                result = temp->data;
                if (temp->left) {
                    q.push(temp->left);
                }
                temp = temp->right;
            }
        }
    }
    return -1;
}

int main() {
    Node* root = getNewNode(10);
    root->left = getNewNode(5);
    root->right = getNewNode(56);
    root->left->left = getNewNode(3);
    root->left->right = getNewNode(22);
    root->right->right = getNewNode(34);
    root->right->right->left = getNewNode(45);
    root->left->right->left = getNewNode(67);
    root->left->right->right = getNewNode(100);
    int k = 9;
    cout << findDiagonalKthElement(root, k) << endl;
    return 0;
}

আউটপুট

উপরের কোডটি রান করলে নিচের ফলাফল পাওয়া যাবে:

67

নিষ্কর্ষ

এই টিউটোরিয়াল সম্পর্কে আপনার যেকোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।

  1. C++-এ N-ary ট্রি প্রি-অর্ডার ট্রভার্সাল (N-ary Tree Preorder Traversal)

  2. সি++-এ বাইনারি ট্রি ক্যামেরা

  3. পাইথনে বাইনারি ট্রি প্রি-অর্ডার ট্রাভার্সাল

  4. বাইনারি ট্রির ভার্টিকাল অর্ডার ট্রাভার্সালে k-তম নোড খুঁজে বের করা C++-তে