কম্পিউটার

পাইথনে একটি এন-আরি গাছের একটি অনুলিপি তৈরি করার প্রোগ্রাম


ধরুন, আমাদের একটি এন-আরি গাছ দেওয়া হয়েছে যার মূল আমাদের 'মূল' দেওয়া হয়েছে। আমাদের সম্পূর্ণ n-ary বাইনারি গাছের একটি অনুলিপি তৈরি করতে হবে এবং উভয় গাছের একটি প্রি-অর্ডার ট্রাভার্সাল করতে হবে। অনুলিপি করা গাছটিকে অন্য রুট নোড ব্যবহার করে সংরক্ষণ করতে হবে। গাছের নোড গঠন নিচে দেওয়া হল -

নোড:মান:<পূর্ণসংখ্যা> শিশু:<অ্যারে> 

সুতরাং, যদি ইনপুট মত হয়

পাইথনে একটি এন-আরি গাছের একটি অনুলিপি তৈরি করার প্রোগ্রাম

, তাহলে আউটপুট হবে

<প্রে>[14, 27, 32, 42, 56, 65]

ইনপুট ট্রি এবং আউটপুট ট্রির প্রি-অর্ডার উপস্থাপনা একই হবে যেভাবে গাছের একটি সঠিক কপি তৈরি করা হয়েছে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • যদি রুট খালি না হয়, তাহলে

    • রিটার্ন রুট

  • head :=রুটের মান সহ একটি নতুন নোড

  • q :=রুট এবং হেড উপাদান ধারণকারী একটি নতুন ডিক

  • q খালি না থাকার সময়, করুন

    • নোড :=q

      থেকে প্রথম উপাদানটি পপ করুন
    • ক্লোনড :=q

      থেকে প্রথম উপাদানটি পপ করুন
    • node.children-এ প্রতিটি chld-এর জন্য করুন

      • new_n :=chld এর মান ধারণকারী একটি নতুন নোড

      • ক্লোন করা শিশুদের সাথে new_n যোগ করুন

      • q

        এর শেষে chld এবং new_n ঢোকান
  • রিটার্ন হেড

উদাহরণ (পাইথন)

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

 সারি থেকে আমদানি করা dequeclass নোড:def __init__(self, value, child =None) -> None:self.val =value self.children =[] if child !=None:for value in child:self.children. append(value)def solve(root):রুট না হলে:রিটার্ন root head =Node(root.val) q =deque([(root, head)]) যখন q:node, cloned =q.popleft() chld এর জন্য node.children এ:new_n =Node(chld.val) cloned.children.append(new_n) q.append((chld,new_n)) রিটার্ন হেডডেফ ট্রিপ্রিন্ট(নোড, ট্রি):যদি নোড ==কোনটিই না:tree.append( "কোনটিই নয়") রিটার্ন ট্রি যদি ট্রি ==কোনোটিই না:নোড. চিল্ড্রেনে শিশুর জন্য গাছ =[] ট্রি.অ্যাপেন্ড(নোড.ভাল):ট্রিপ্রিন্ট(শিশু, গাছ) রিটার্ন ট্রিনোড6 =নোড(65)নোড5 =নোড(56) node4 =Node(42, [node5, node6])node3 =Node(32)node2 =Node(27)node1 =Node(14, [node2, node3, node4])root =node1copynode =solve(root)print(treeprint( কপিনোড, কোনটিই নয়))

ইনপুট

node6 =Node(65)node5 =Node(56)node4 =Node(42, [node5, node6])node3 =Node(32)node2 =Node(27)node1 =Node(14, [node2, node3, node4])root =node1

আউটপুট

<প্রে>[14, 27, 32, 42, 56, 65]
  1. পাইথনে লিঙ্ক করা তালিকাকে জিগ-জ্যাগ বাইনারি ট্রিতে রূপান্তর করার প্রোগ্রাম

  2. পাইথনে একটি বাইনারি ট্রি নোডের ভাইবোনের মান খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে একটি গাছের বাম গভীরতম নোড খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে ভারতীয় পতাকা বানানোর প্রোগ্রাম