কম্পিউটার

সর্বনিম্ন নং C++-এ গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণের পুনরাবৃত্তির


আমাদের নোডের 'n' সংখ্যা সহ একটি ট্রি ডেটা স্ট্রাকচার দেওয়া হয়েছে। প্রদত্ত গাছের একটি রুট নোড এবং সংশ্লিষ্ট শিশু থাকবে যা যেকোনো সংখ্যা হতে পারে এবং পরবর্তী শিশুর যেকোনো সংখ্যক সন্তান থাকতে পারে। কাজটি হল একটি গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণ করার জন্য একটি গাছের রুট নোড দ্বারা প্রয়োজনীয় ন্যূনতম সংখ্যক পুনরাবৃত্তির সন্ধান করা। একটি সময়ে, একটি নোড তার সন্তানদের একজনের কাছে তথ্য পাঠাতে পারে এবং আরও একটি শিশু তার সন্তানদের একজনের কাছে তথ্য পাঠাতে পারে এবং একই সময়ে রুট নোড অন্য সন্তানের কাছে তথ্য পাঠাতে পারে।

আসুন এর জন্য বিভিন্ন ইনপুট আউটপুট পরিস্থিতি দেখি -

- মধ্যে

সর্বনিম্ন নং C++-এ গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণের পুনরাবৃত্তির

আউট - সর্বনিম্ন নং গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণের পুনরাবৃত্তিগুলি হল:5

ব্যাখ্যা - আমাদের রুট এবং অন্যান্য সমস্ত নোড সহ মোট 11টি নোড সহ একটি গাছ দেওয়া হয়েছে। একটি প্রদত্ত গাছের রুট নোড হল 0 যা প্রথমে নোড 1-এ ডেটা পাস করবে কারণ এতে অনেকগুলি বাচ্চা রয়েছে তারপরে অন্যান্য নোড রয়েছে, তারপর রুট নোড নোড 4-এ ডেটা পাস করবে, তারপর এটি 3-এ ডেটা পাস করবে, তারপর এটি পাস হবে ডেটা 6-এ এবং শেষ পর্যন্ত এটি 2-এ ডেটা পাস করবে। সুতরাং, মোট পুনরাবৃত্তির প্রয়োজন 5।

- মধ্যে

সর্বনিম্ন নং C++-এ গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণের পুনরাবৃত্তির

আউট - সর্বনিম্ন নং গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণের পুনরাবৃত্তিগুলি হল:1

ব্যাখ্যা - :আমাদের রুট এবং অন্যান্য সমস্ত নোড সহ মোট 2টি নোড সহ একটি গাছ দেওয়া হয়। যেহেতু একটি প্রদত্ত গাছে একটি রুট নোডের শুধুমাত্র একটি শিশু আছে তাই ন্যূনতম পুনরাবৃত্তির সংখ্যা 1 হবে৷

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি হল -

  • ট্রি তৈরি করার জন্য একটি ক্লাস তৈরি করুন এবং নোডগুলিকে এর ডেটা সদস্য হিসাবে যুক্ত করুন এবং List_children হিসাবে একটি তালিকা পয়েন্টার তৈরি করুন এবং একটি ব্যক্তিগত পদ্ধতিকে অকার্যকর পুনরাবৃত্তি (int vertices, int arr[]) হিসাবে ঘোষণা করুন। একটি প্যারামিটারাইজড কনস্ট্রাক্টরকে Tree(int নোড), void insert_node(int a, int b), int Min_Iteration() এবং স্ট্যাটিক int check(const void *a_1, const void *b_1) হিসাবে ঘোষণা করুন।

  • একটি বহিরাগত প্যারামিটারাইজড কনস্ট্রাক্টরকে কল করুন Tree::Tree(int nodes)

    • এটি->নোডগুলিকে নোডে সেট করুন৷

    • List_children কে নতুন তালিকা[নোডস]

      -এ সেট করুন
  • একটি ক্লাস পদ্ধতিকে ভ্যায়েড ট্রি::ইনসার্ট_নোড (int a, int b)

    • Push_back(b)

      -এ List_children[a] সেট করুন
  • একটি ক্লাস পদ্ধতিকে অকার্যকর ট্রি::পুনরাবৃত্তি (int vertices, int arr[])

    • arr[vertices] কে List_children[vertices].size()

      -এ সেট করুন
    • *ptr কে নতুন int[arr[vertices]]

      এ সেট করুন
    • তাপমাত্রা 0 এবং temp_2-এ 0

      সেট করুন
    • একটি পুনরাবৃত্তিকারীকে তালিকা হিসাবে ঘোষণা করুন::iterator it

    • এটি থেকে List_children[vertices].begin() এ স্টার্ট লুপ করুন যতক্ষণ না এটি List_children[vertices].end() এর সমান না হয় এবং এটিকে প্রি-ইনক্রিমেন্ট করুন। লুপের ভিতরে পুনরাবৃত্তি (*it, arr) সেট করুন এবং ptr[temp++] সেট করুন [*it]

    • দ্রুত সাজানোর জন্য qsort(ptr, arr[vertices], sizeof(int), check) কল করুন

    • স্টার্ট লুপ ফর টেম্প থেকে 0 এবং টেম্প কম List_children[vertices].size() এবং পোস্ট ইনক্রিমেন্ট টেম্প। লুপের ভিতরে, temp_2 কে ptr[temp] + temp + 1 এবং arr[vertices] max(arr[vertices], temp_2) এ সেট করুন এবং মুছুন[] ptr

  • একটি ক্লাস পদ্ধতিকে int Tree::Min_Iteration()

    হিসাবে কল করুন
    • একটি পয়েন্টারকে int *ptr =নতুন int[নোডস]

      হিসাবে ঘোষণা করুন
    • একটি ভেরিয়েবলকে int temp =-1

      হিসাবে ঘোষণা করুন
    • i <নোড এবং i++ পর্যন্ত i থেকে 0 পর্যন্ত FOR লুপ শুরু করুন। লুপের ভিতরে, ptr[i] 0

      সেট করুন
    • পুনরাবৃত্তি (0, ptr) কল করুন এবং তাপমাত্রা ptr[0] এ সেট করুন এবং মুছুন[] ptr

    • রিটার্ন টেম্প

  • int Tree::check (const void * a_1, const void * b_1) হিসাবে একটি ক্লাস পদ্ধতিকে কল করুন

    • একটি ভেরিয়েবলকে ( *(int*)b_1 - *(int*)a_1 )

      এর ফলাফল হিসাবে ঘোষণা করুন
    • ফেরত ফলাফল

  • প্রধান() ফাংশনে

    • একটি প্যারামিটারাইজড কনস্ট্রাক্টর ব্যবহার করে একটি ট্রি অবজেক্ট তৈরি করুন।

    • তারপর ট্রি ক্লাসের অবজেক্ট ব্যবহার করে insert_node() মেথড কল করে ট্রিতে নোড ডেটা ইনসার্ট করুন

    • গাছের সমস্ত নোডগুলিতে তথ্য পাঠাতে ন্যূনতম পুনরাবৃত্তির সংখ্যা গণনা করতে Min_Iteration() পদ্ধতিতে কল করুন

উদাহরণ

#includeNamespace std;class Tree{int নোড ব্যবহার করে; তালিকা *তালিকা_শিশু; অকার্যকর পুনরাবৃত্তি(int vertices, int arr[]);public://একটি শ্রেণীর ট্রি(int নোডস) এর নির্মাণকারী; // একটি ট্রি অকার্যকর একটি নোড সন্নিবেশ করার পদ্ধতি insert_node(int a, int b); Min_Iteration int ন্যূনতম পুনরাবৃত্তি গণনা করার // পদ্ধতি; স্ট্যাটিক int চেক (const void *a_1, const void *b_1);};Tree::Tree(int nodes){ this->nodes =nodes; List_children =new list[nodes];}void Tree::insert_node(int a, int b){ List_children[a].push_back(b);}void Tree::Iteration(int vertices, int arr[]) { arr[vertices] =List_children[vertices].size(); int *ptr =নতুন int[arr[শীর্ষ]]; int temp =0; int temp_2 =0; list::iterator it; for(it =List_children[vertices].begin(); it!=list_children[vertices].end(); ++it) { পুনরাবৃত্তি(*it, arr); ptr[temp++] =arr[*it]; } qsort(ptr, arr[vertices], sizeof(int), check); for(temp =0; temp  

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে

<পূর্ব>সর্বনিম্ন নম্বর গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণের পুনরাবৃত্তিগুলি হল:8 নূন্যতম সংখ্যা৷ গাছের সমস্ত নোডগুলিতে তথ্য প্রেরণের পুনরাবৃত্তিগুলি হল:8

  1. C++ এ প্রদত্ত বাইনারি গাছের সমস্ত স্তরের মধ্যে নন-লিফ নোডের সর্বাধিক যোগফল

  2. C++ এ একটি বাইনারি ট্রিতে সমস্ত পূর্ণ নোড প্রিন্ট করুন

  3. C++ তে বিজোড় এবং জোড় সংখ্যার নোড সহ সমস্ত স্তর প্রিন্ট করুন

  4. C++ এ প্রদত্ত নিখুঁত বাইনারি গাছের সমস্ত নোডের সমষ্টি খুঁজুন