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

বিজোড় এবং জোড় সংখ্যক নোড वाले ট্রি লেভেল প্রিন্ট করা C++-তে


এই সমস্যায়, একটি ট্রি দেওয়া থাকে। এবং আমাদের বিজোড় সংখ্যক নোড এবং জোড় সংখ্যক নোড 가진 সব লেভেল প্রিন্ট করতে হবে।

উদাহরণ দিয়ে কনসেপ্টটি বুঝি:

বিজোড় এবং জোড় সংখ্যক নোড वाले ট্রি লেভেল প্রিন্ট করা C++-তে

আউটপুট:

Levels with odd number of nodes: 1, 3, 4 Levels with even number of nodes: 2

ব্যাখ্যা: প্রথম লেভেলে শুধু ১টি এলিমেন্ট (বিজোড়), ২য় লেভেলে দুটি এলিমেন্ট (জোড়), ৩য় লেভেলে ৩টি এলিমেন্ট (বিজোড়) এবং ৪র্থ লেভেলে ১টি এলিমেন্ট (বিজোড়)।

এখন, এই সমস্যাটি সমাধান করতে। আমাদের প্রতিটি লেভেলে নোডের কাউন্ট বের করতে হবে এবং জোড়-বিজোড় লেভেল অনুযায়ী প্রিন্ট করতে হবে।

আমরা নিচের ধাপগুলো অনুসরণ করব সমাধান খুঁজে বের করতে:

ধাপ ১ − height[node]=1+height[parent] ব্যবহার করে প্রতিটি লেভেলের জন্য সার্চ অ্যালগরিদম রান করুন।

ধাপ ২ − প্রতিটি লেভেলের জন্য সেই লেভেলে নোডের সংখ্যা সংরক্ষণ করুন।

ধাপ ৩ − এলিমেন্ট ধারণকারী অ্যারে ইটারেট করুন, এবং জোড় এবং বিজোড় লেভেলে প্রিন্ট করুন।

C++ উদাহরণ

#include <bits/stdc++.h> using namespace std; void traversal(int node, int parent, int height[], int vis[], vector<int> tree[]){ height[node] = 1 + height[parent]; vis[node] = 1; for (auto it : tree[node]) { if (!vis[it]) { traversal(it, node, height, vis, tree); } } } void insert(int x, int y, vector<int> tree[]){ tree[x].push_back(y); tree[y].push_back(x); } void evenOddLevels(int N, int vis[], int height[]){ int mark[N + 1]; memset(mark, 0, sizeof mark); int maxLevel = 0; for (int i = 1; i <= N; i++) { if (vis[i]) mark[height[i]]++; maxLevel = max(height[i], maxLevel); } cout << "The levels with odd number of nodes are: "; for (int i = 1; i <= maxLevel; i++) { if (mark[i] % 2) cout << i << " "; } cout << "\nThe levels with even number of nodes are: "; for (int i = 1; i <= maxLevel; i++) { if (mark[i] % 2 == 0) cout << i << " "; } } int main(){ const int N = 9; vector<int> tree[N + 1]; insert(1, 2, tree); insert(1, 3, tree); insert(2, 4, tree); insert(2, 5, tree); insert(5, 7, tree); insert(5, 8, tree); insert(3, 6, tree); insert(6, 9, tree); int height[N + 1]; int vis[N + 1] = { 0 }; height[0] = 0; traversal(1, 0, height, vis, tree); evenOddLevels(N, vis, height); return 0; }

আউটপুট

The levels with odd number of nodes are: 1 3 4 The levels with even number of nodes are: 2
  1. অনসcaffoldড গ্রাফের সব সাইকেল প্রিন্ট করা C++-তে

  2. বিজোড় এবং জোড় সংখ্যক নোড वाले ট্রি লেভেল প্রিন্ট করা C++-তে

  3. সি++ প্রোগ্রাম: বাইনারি ট্রি (Binary Tree)-এর বিজোড় লেভেল (Odd Level)-এ থাকা নোডগুলো প্রিন্ট করা

  4. C++ প্রোগ্রামিং-এ ট্রির বিষম লেভেলের নোডগুলো প্রিন্ট করা