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

पायथन में बाइनरी ट्री में दो तत्वों के सामान्य पूर्वज को खोजने का प्रोग्राम


मान लीजिए हमारे पास एक बाइनरी ट्री है, और हमारे पास दो संख्याएं a और b भी हैं, हमें उस सबसे निचले नोड का मान ढूंढना है जिसमें a और b वंशज के रूप में हैं। हमें ध्यान रखना है कि एक नोड स्वयं का वंशज हो सकता है।

इसलिए, यदि इनपुट इस तरह है

पायथन में बाइनरी ट्री में दो तत्वों के सामान्य पूर्वज को खोजने का प्रोग्राम

a = 6, b = 2, तो आउटपुट 4 होगा।

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

  • एक विधि solve() परिभाषित करें यह root और a, b लेगा

  • यदि root null है, तो

    • -1 वापस करें

  • यदि root का मान या तो a या b है, तो

    • root का मान वापस करें

  • left := solve(root का बायाँ, a, b)

  • right := solve(root का दायाँ, a, b)

  • यदि left या right, -1 नहीं है, तो

    • root का मान वापस करें

  • left वापस करें यदि left, -1 के समान नहीं है अन्यथा right

  • मुख्य विधि से solve(root) कॉल करें

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

उदाहरण

class TreeNode:    def __init__(self, val, left=None, right=None):       self.val = val       self.left = left       self.right = right class Solution:    def solve(self, root, a, b):       if not root:          return -1       if root.val in (a, b):          return root.val       left = self.solve(root.left, a, b)       right = self.solve(root.right, a, b)       if -1 not in (left, right):          return root.val       return left if left != -1 else right ob = Solution() root = TreeNode(3) root.left = TreeNode(10) root.right = TreeNode(4) root.right.left = TreeNode(8) root.right.right = TreeNode(2) root.right.left.left = TreeNode(6) print(ob.solve(root, 6, 2))

इनपुट

root = TreeNode(3) root.left = TreeNode(10) root.right = TreeNode(4) root.right.left = TreeNode(8) root.right.right = TreeNode(2) root.right.left.left = TreeNode(6) 6, 2

आउटपुट

4

  1. पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम पायथन में बाइनरी ट्री की अधिकतम चौड़ाई खोजने का प्रोग्राम

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

  1. पायथन में बाइनरी ट्री का लोएस्ट कॉमन एंसेस्टर पायथन में बाइनरी ट्री का लोएस्ट कॉमन एंसेस्टर

    मान लीजिए हमारे पास एक बाइनरी ट्री है। हमें दो दिए गए नोड्स का लोएस्ट कॉमन एंसेस्टर नोड ढूंढना है। दो नोड्स p और q का LCA वास्तव में ट्री में सबसे निचला नोड है जिसमें p और q दोनों डिसेंडेंट के रूप में हों। इसलिए यदि बाइनरी ट्री [3,5,1,6,2,0,8,null,null,7,4] जैसा है। ट्री इस तरह होगा - यहां 5 और 1 क

  1. पायथन में बाइनरी सर्च ट्री का निम्नतम सामान्य पूर्वज पायथन में बाइनरी सर्च ट्री का निम्नतम सामान्य पूर्वज

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री है। हमें दो दिए गए नोड्स का निम्नतम सामान्य पूर्वज नोड ढूंढना है। दो नोड्स p और q का LCA वास्तव में ट्री में सबसे निचला नोड है जिसमें p और q दोनों वंशज के रूप में हों। यदि बाइनरी ट्री [6, 2, 8, 0, 4, 7, 9, null, null, 3, 5] जैसा है। ट्री इस तरह होगा: यहां 2