ধরুন আমাদের একটি ম্যাট্রিক্স আছে, আমাদের এটিকে পুনরাবৃত্ত পদ্ধতি ব্যবহার করে 2d লিঙ্কযুক্ত তালিকায় রূপান্তর করতে হবে৷
তালিকায় ডান এবং নিচের পয়েন্টার থাকবে৷
৷সুতরাং, যদি ইনপুট মত হয়
10 | 20 | 30 |
40 | 50 | 60 |
70 | 80 | 90 |
তারপর আউটপুট হবে
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন make_2d_list() সংজ্ঞায়িত করুন, এটি ম্যাট্রিক্স ম্যাট, i, j, m, n,
লাগবে -
যদি i এবং j ম্যাট্রিক্স সীমানায় না থাকে, তাহলে −
-
রিটার্ন নাল
-
-
temp :=মান ম্যাট[i, j]
সহ একটি নতুন নোড তৈরি করুন -
তাপমাত্রার অধিকার :=make_2d_list(mat, i, j + 1, m, n)
-
নিম্ন তাপমাত্রা :=make_2d_list(mat, i + 1, j, m, n)
-
রিটার্ন টেম্প
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h> using namespace std; class TreeNode { public: int data; TreeNode *right, *down; TreeNode(int d){ data = d; right = down = NULL; } }; void show_2d_list(TreeNode* head) { TreeNode *right_ptr, *down_ptr = head; while (down_ptr) { right_ptr = down_ptr; while (right_ptr) { cout << right_ptr->data << " "; right_ptr = right_ptr->right; } cout << endl; down_ptr = down_ptr->down; } } TreeNode* make_2d_list(int mat[][3], int i, int j, int m, int n) { if (i > n - 1 || j > m - 1) return NULL; TreeNode* temp = new TreeNode(mat[i][j]); temp->right = make_2d_list(mat, i, j + 1, m, n); temp->down = make_2d_list(mat, i + 1, j, m, n); return temp; } int main() { int m = 3, n = 3; int mat[][3] = { { 10, 20, 30 }, { 40, 50, 60 }, { 70, 80, 90 } }; TreeNode* head = make_2d_list(mat, 0, 0, m, n); show_2d_list(head); }
ইনপুট
{ { 10, 20, 30 }, { 40, 50, 60 }, { 70, 80, 90 } }
আউটপুট
10 20 30 40 50 60 70 80 90