Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में n-ary पेड़ की प्रतिलिपि बनाने का कार्यक्रम

मान लीजिए, हमें एक एन-आर्य वृक्ष प्रदान किया गया है जिसकी जड़ हमें 'जड़' दी गई है। हमें पूर्ण एन-आरी बाइनरी ट्री की एक प्रति बनानी होगी और दोनों पेड़ों का प्रीऑर्डर ट्रैवर्सल करना होगा। कॉपी किए गए पेड़ को दूसरे रूट नोड का उपयोग करके संग्रहीत किया जाना है। पेड़ की नोड संरचना नीचे दी गई है -

Node:
   value : <integer>
   children : <array>

तो, अगर इनपुट पसंद है

पायथन में n-ary पेड़ की प्रतिलिपि बनाने का कार्यक्रम

, तो आउटपुट होगा

[14, 27, 32, 42, 56, 65]

इनपुट ट्री और आउटपुट ट्री का प्रीऑर्डर प्रतिनिधित्व वैसा ही होगा जैसा ट्री की एक सटीक कॉपी बनाई गई है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • अगर रूट खाली नहीं है, तो

    • वापसी जड़

  • सिर :=रूट के मान के साथ एक नया नोड

  • q :=एक नया डेक जिसमें तत्व जड़ और शीर्ष शामिल हैं

  • जबकि q खाली नहीं है, करें

    • नोड:=q से पहला तत्व पॉप करें

    • क्लोन:=क्यू से पहला तत्व पॉप करें

    • नोड.चिल्ड्रेन में प्रत्येक chld के लिए, करें

      • new_n :=एक नया नोड जिसमें chld का मान हो

      • क्लोन के बच्चों के लिए new_n संलग्न करें

      • q के अंत में chld और new_n डालें

  • वापसी सिर

उदाहरण (पायथन)

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

from queue import deque
class Node:
   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):
   if not root:
      return root
   head = Node(root.val)
   q = deque([(root, head)])
   while q:
      node, cloned = q.popleft()
      for chld in node.children:
         new_n = Node(chld.val)
         cloned.children.append(new_n)
         q.append((chld,new_n))
   return head

def treeprint(node, tree):
   if node == None:
      tree.append("None")
      return tree
   if tree == None:
      tree = []
   tree.append(node.val)
   for child in node.children:
      treeprint(child, tree)
   return tree

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

copynode = solve(root)
print(treeprint(copynode, None))

इनपुट

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. पायथन में बाइनरी ट्री नोड के सहोदर मूल्य को खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान k और एक बाइनरी सर्च ट्री है, यहाँ प्रत्येक नोड या तो एक पत्ता है या इसमें 2 बच्चे हैं। हमें k मान वाले नोड को खोजना होगा, और उसके भाई-बहन का मान लौटाना होगा। तो, अगर इनपुट पसंद है k =4, तो आउटपुट 10 होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - उपयोग()

  1. पायथन में एक पेड़ के सबसे गहरे नोड को खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें सबसे गहरे नोड का मान ज्ञात करना होगा। यदि एक से अधिक गहरे नोड हैं, तो सबसे बाएं सबसे गहरे नोड को वापस करें। तो, अगर इनपुट पसंद है तो आउटपुट 4 होगा क्योंकि 4 और 7 सबसे गहरे हैं लेकिन 4 सबसे ज्यादा बचे हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे

  1. पायथन में भारतीय ध्वज बनाने का कार्यक्रम

    ग्राफ बनाने के लिए पायथन के पुस्तकालयों में बहुत व्यापक विशेषताएं हैं जो हमें न केवल चार्ट दे सकती हैं बल्कि हमें झंडे जैसे अन्य आरेखों को खींचने के लिए लचीलापन भी दे सकती हैं। उस अर्थ में उन मॉड्यूलों में कलात्मक स्पर्श होता है। इस लेख में हम देखेंगे कि numpy और matplotlib पुस्तकालयों का उपयोग करके