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

C++-এ সেম ট্রি (Same Tree)


দুটি বাইনারি ট্রি দেওয়া আছে। সেগুলো স্ট্রাকচারলি আইডেন্টিক্যাল এবং নোড মানগুলো সমান কিনা চেক করুন।

উদাহরণ: [1,2,3], [1,2,3] -> true।

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

  • রিকারসিভ ফাংশন isSameTree(p, q):
  • যদি p এবং q দুটোই NULL, true।
  • যদি একটিই NULL, false।
  • যদি p->val == q->val এবং left ও right সাবট্রি Same Tree হয়, true।
  • অন্যথায় false।

C++ কোড উদাহরণ

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

class TreeNode {
public:
    int val;
    TreeNode *left, *right;
    TreeNode(int data) { val = data; left = NULL; right = NULL; }
};

void insert(TreeNode **root, int val) {
    queue<TreeNode*> q; q.push(*root);
    while (q.size()) {
        TreeNode *temp = q.front(); q.pop();
        if (!temp->left) {
            if (val != NULL) temp->left = new TreeNode(val);
            else temp->left = new TreeNode(0);
            return;
        } else q.push(temp->left);
        if (!temp->right) {
            if (val != NULL) temp->right = new TreeNode(val);
            else temp->right = new TreeNode(0);
            return;
        } else q.push(temp->right);
    }
}

TreeNode *make_tree(vector<int> v) {
    TreeNode *root = new TreeNode(v[0]);
    for (int i = 1; i < v.size(); i++) insert(&root, v[i]);
    return root;
}

class Solution {
public:
    bool isSameTree(TreeNode *p, TreeNode* q) {
        if (p == NULL && q == NULL) return true;
        if (p == NULL || q == NULL) return false;
        if (p->val == q->val && isSameTree(p->left, q->left) && isSameTree(p->right, q->right))
            return true;
        return false;
    }
};

int main() {
    Solution ob;
    vector<int> v = {1,2,3}, v1 = {1,2,3};
    TreeNode *root1 = make_tree(v);
    TreeNode *root2 = make_tree(v1);
    cout << ob.isSameTree(root1, root2);
    return 0;
}

ইনপুট

{1,2,3}, {1,2,3}

আউটপুট

1
  1. C++-এ কন্টিনিউআস ট্রি (Continuous Tree) যাচাই

  2. C++-এ বাইনারি ট্রি প্রিন্ট করা

  3. C++-এ ট্রি ডায়ামিটার

  4. বাইনারি ট্রি প্রুনিং C++-এ