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

Python से बाइनरी ट्री का लोएस्ट कॉमन एंसेस्टर (LCA) कैसे ढूंढें?

बाइनरी ट्री में दो नोड्स का LCA ढूंढने के लिए रिकर्सिव DFS: अगर दोनों सबट्रीज़ में नोड्स मिलें तो वर्तमान नोड LCA है।

एल्गोरिदम

  • रिकर्सिव dfs(node) फंक्शन।
  • अगर नोड x या y है: लेफ्ट/राइट चेक करें, कोई मिला तो वर्तमान नोड LCA।
  • लेफ्ट और राइट दोनों से रिकर्सिव कॉल।
  • अगर दोनों नॉन-None रिटर्न करें: वर्तमान नोड LCA।
  • अन्यथा जो भी नॉन-None है उसे रिटर्न करें।

उदाहरण कोड


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

def solve(root, x, y):
    def dfs(node):
        if not node:
            return
        if node in [x, y]:
            left = dfs(node.left)
            right = dfs(node.right)
            if left or right:
                return node
        left = dfs(node.left)
        right = dfs(node.right)
        if left and right:
            return node
        return left or right
    return dfs(root)

# टेस्ट: ट्री [5,3,7,2,4,1,7,6,8,10], x=2, y=4 -> LCA = 3

इनपुट/आउटपुट

इनपुट: ट्री [5,3,7,2,4,1,7,6,8,10], नोड्स 2 और 4
आउटपुट: 3

  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