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

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

बाइनरी ट्री में दिए गए नोड्स के लोएस्ट कॉमन एंसेस्टर (LCA) को रिकर्सिव DFS से ढूंढें।

एल्गोरिदम

  • रिकर्सिव फंक्शन fn(node) जो नोड या None रिटर्न करता है।
  • अगर नोड टारगेट नोड्स सेट में है, तो नोड रिटर्न करें।
  • लेफ्ट और राइट सबट्री पर रिकर्स करें।
  • अगर दोनों नॉन-None रिटर्न करें, तो वर्तमान नोड LCA है।
  • अन्यथा जो भी नॉन-None है उसे रिटर्न करें।
  • सभी टारगेट नोड्स को सेट में डालकर fn(root) कॉल करें।

उदाहरण कोड

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

def solve(root, node_list):
    nodes = set()
    for elem in node_list:
        nodes.add(search_node(root, elem))
    
    def fn(node):
        if not node:
            return node
        if node in nodes:
            return node
        left, right = fn(node.left), fn(node.right)
        return node if left and right else left or right
    
    return fn(root)

# टेस्ट: ट्री [5,3,7,2,4,6,8], नोड्स [6,8] -> LCA = 7

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

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

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

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

  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