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

पायथन में सममित ट्री


मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें जांचना है कि क्या ट्री एक सममित ट्री है या नहीं। एक ट्री को सममित कहा जाएगा यदि यह दर्पण छवि लेने पर समान हो। इन दो ट्री में, पहला सममित है, लेकिन दूसरा नहीं।

पायथन में सममित ट्री

हल करने के चरण

  • हम निम्नलिखित चरणों को पुनरावर्ती रूप से कॉल करेंगे। फंक्शन solve(root, root) होगा
  • यदि node1 और node2 खाली हैं, तो true वापस करें
  • यदि node1 या node2 में से कोई एक खाली है, तो false वापस करें
  • true वापस करें जब node1.val = node2.val और solve(node1.left, node2.right) और solve(node1.right, node2.left)

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

उदाहरण

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(object):
    def isSymmetric(self, root):
        """
        :type root: TreeNode
        :rtype: bool
        """
        return self.solve(root,root)

    def solve(self,node1,node2):
        if not node1 and not node2:
            return True
        if not node1 or not node2:
            return False
        return node1.data == node2.data and self.solve(node1.left,node2.right) and self.solve(node1.right,node2.left)

tree1 = make_tree([1,2,2,3,4,4,3])
tree2 = make_tree([1,2,2,3,4,None,3])
ob1 = Solution()
print(ob1.isSymmetric(tree1))
print(ob1.isSymmetric(tree2))

इनपुट

tree1 = make_tree([1,2,2,3,4,4,3]) tree2 = make_tree([1,2,2,3,4,None,3])

आउटपुट

True False

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

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

  1. पायथन में बाइनरी ट्री की अधिकतम गहराई पायथन में बाइनरी ट्री की अधिकतम गहराई

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें उस ट्री की अधिकतम गहराई ढूंढनी है। ट्री की अधिकतम गहराई वह अधिकतम नोड्स की संख्या है जो सबसे लंबे पथ का उपयोग करके रूट से लीफ तक पहुंचने के लिए पार की जाती है। मान लीजिए ट्री नीचे जैसा है। यहां गहराई 3 होगी। हल करने के चरण यहां हम पुनरावर्ती दृष्टिकोण क

  1. पायथन में सममित ट्री पायथन में सममित ट्री

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें जांचना है कि क्या ट्री एक सममित ट्री है या नहीं। एक ट्री को सममित कहा जाएगा यदि यह दर्पण छवि लेने पर समान हो। इन दो ट्री में, पहला सममित है, लेकिन दूसरा नहीं। हल करने के चरण हम निम्नलिखित चरणों को पुनरावर्ती रूप से कॉल करेंगे। फंक्शन solve(root, root) ह