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

पायथन में बाइनरी ट्री से स्ट्रिंग बनाएं


मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें प्रीऑर्डर ट्रैवर्सल तरीके से बाइनरी ट्री से पैरेंथेसिस और पूर्णांकों से बनी एक स्ट्रिंग बनानी है। एक नल नोड को खाली पैरेंथेसिस जोड़ी "()" द्वारा दर्शाया जाएगा। और हमें उन सभी खाली पैरेंथेसिस जोड़ियों को छोड़ना होगा जो स्ट्रिंग और मूल बाइनरी ट्री के बीच एक-से-एक मैपिंग संबंध को प्रभावित नहीं करते।

उदाहरण के लिए, यदि इनपुट है:

पायथन में बाइनरी ट्री से स्ट्रिंग बनाएं

तो आउटपुट 5(6()(8))(7) होगा।

हल करने के चरण

  • ans := खाली स्ट्रिंग
  • pot() फ़ंक्शन परिभाषित करें। यह node, s लेगा
    • यदि null है, तो खाली स्ट्रिंग वापस करें
    • यदि node का बायां या दायां null है, तो node.data वापस करें
    • ss := node.data
    • यदि node.left null नहीं है, तो:
      • ss := ss + '(' + pot(node.left, खाली स्ट्रिंग) + ')'
    • अन्यथा:
      • ss := ss + '()'
    • यदि node.right null नहीं है, तो:
      • ss := ss + '(' + pot(node.right, खाली स्ट्रिंग) + ')'
    • ss वापस करें
  • मुख्य मेथड से निम्न करें:
    • pot(t, खाली स्ट्रिंग) वापस करें

उदाहरण

class TreeNode:
    def __init__(self, data, left=None, right=None):
        self.data = data
        self.left = left
        self.right = right

def insert(temp, data):
    que = []
    que.append(temp)
    while len(que):
        temp = que[0]
        que.pop(0)
        if not temp.left:
            if data is not None:
                temp.left = TreeNode(data)
            else:
                temp.left = TreeNode(0)
            break
        else:
            que.append(temp.left)
        if not temp.right:
            if data is not None:
                temp.right = TreeNode(data)
            else:
                temp.right = TreeNode(0)
            break
        else:
            que.append(temp.right)

def make_tree(elements):
    Tree = TreeNode(elements[0])
    for element in elements[1:]:
        insert(Tree, element)
    return Tree

class Solution:
    def tree2str(self, t: TreeNode):
        ans = ''
        def pot(node, s):
            if node == None or node.data == 0:
                return ''
            if node.left == node.right == None:
                return str(node.data)
            ss = str(node.data)
            if node.left != None:
                ss = ss + '(' + pot(node.left, '') + ')'
            else:
                ss = ss + '()'
            if node.right != None:
                ss = ss + '(' + pot(node.right, '') + ')'
            return ss
        return pot(t, '')

ob = Solution()
root = make_tree([5,6,7,None,8])
print(ob.tree2str(root))

इनपुट

[5,6,7,None,8]

आउटपुट

5(6()(8))(7)
  1. पायथन में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री बनाएं पायथन में इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल से बाइनरी ट्री बनाएं

    मान लीजिए हमारे पास एक बाइनरी ट्री का इनऑर्डर और पोस्टऑर्डर ट्रैवर्सल अनुक्रम है। हमें इन अनुक्रमों से ट्री उत्पन्न करना है। इसलिए यदि पोस्टऑर्डर और इनऑर्डर अनुक्रम [9,15,7,20,3] और [9,3,15,20,7] हैं, तो ट्री होगा - आइए चरण देखते हैं - मान लीजिए मेथड को buildTree कहा जाता है जिसमें प्रीऑर्डर और इन

  1. पायथन में बाइनरी ट्री का व्यास पायथन में बाइनरी ट्री का व्यास

    मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें ट्री के व्यास की लंबाई की गणना करनी है। बाइनरी ट्री का व्यास वास्तव में ट्री में किन्हीं दो नोड्स के बीच सबसे लंबे पथ की लंबाई है। यह पथ अनिवार्य रूप से रूट से होकर नहीं जाता। यदि ट्री नीचे जैसा है, तो व्यास 3 होगा क्योंकि पथ [4,2,1,3] या [5,2,1,3] की लंब

  1. पायथन में बाइनरी ट्री उल्टा करें पायथन में बाइनरी ट्री उल्टा करें

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमारा कार्य एक उल्टा बाइनरी ट्री बनाना है। यदि ट्री नीचे जैसा है: उल्टा ट्री इस तरह होगा: इसे हल करने के लिए हम एक पुनरावर्ती दृष्टिकोण का उपयोग करेंगे: यदि रूट null है, तो वापस करें बाएं और दाएं पॉइंटर्स को स्वैप करें बाएं सबट्री और दाएं सबट्री के लिए पुनर