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

Python में n-ary ट्री की कॉपी बनाने का प्रोग्राम

मान लीजिए, हमें एक n-ary ट्री दिया गया है जिसका रूट 'root' है। हमें पूरे n-ary ट्री की एक कॉपी बनानी है और दोनों ट्री का प्रीऑर्डर ट्रैवर्सल करना है। कॉपी किए गए ट्री को दूसरे रूट नोड का उपयोग करके स्टोर करना है। ट्री की नोड संरचना नीचे दी गई है:

Node:
    value: 
    children: 

इसलिए, यदि इनपुट निम्न ट्री है:

Python में n-ary ट्री की कॉपी बनाने का प्रोग्राम

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

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

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

हल करने के चरण

  1. यदि root खाली है, तो root वापस करें
  2. head := root के मान के साथ एक नया नोड
  3. q := root और head वाले तत्वों का एक नया deque
  4. जब q खाली नहीं है:
    • node := q से पहला तत्व पॉप करें
    • cloned := q से पहला तत्व पॉप करें
    • node.children में प्रत्येक chld के लिए:
      • new_n := chld के मान वाला एक नया नोड
      • cloned के children में new_n जोड़ें
      • q के अंत में chld और new_n डालें
  5. head वापस करें

उदाहरण (Python)

from queue import deque

class Node:
    def __init__(self, value, child=None) -> None:
        self.val = value
        self.children = []
        if child is not 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 is None:
        tree.append("None")
        return tree
    if tree is 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 होगा।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −एक फ़ंक्शन util

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

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

  1. पायथन में भारतीय झंडा बनाने का प्रोग्राम पायथन में भारतीय झंडा बनाने का प्रोग्राम

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