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

पायथन में बाइनरी ट्री में केवल बच्चे नोड्स की संख्या खोजने का प्रोग्राम


मान लीजिए हमारे पास एक बाइनरी ट्री है; हमें उन नोड्स की संख्या ढूंढनी है जो केवल बच्चे हैं। जैसा कि हम जानते हैं, एक नोड x को केवल बच्चा नोड कहा जाता है जब इसके पैरेंट का ठीक एक बच्चा होता है जो x है।

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

पायथन में बाइनरी ट्री में केवल बच्चे नोड्स की संख्या खोजने का प्रोग्राम

तो आउटपुट 2 होगा क्योंकि 8 और 6 केवल बच्चे हैं।

समाधान दृष्टिकोण

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • यदि रूट नल है, तो 0 लौटाएं
  • d := एक डबल-एंडेड क्यू
  • रूट को d के अंत में डालें
  • count := 0
  • जब तक d खाली नहीं है:
    • current := d का बायां तत्व लें और हटाएं
    • यदि current का बायां बच्चा नल नहीं है:
      • current के बाएं बच्चे को d में डालें
      • यदि current का दायां बच्चा नल है:
        • count := count + 1
      • यदि current का दायां बच्चा नल नहीं है:
        • current के दाएं बच्चे को d में डालें
        • यदि current का बायां बच्चा नल है:
          • count := count + 1
    • count लौटाएं

    उदाहरण कोड

    from collections import deque
    
    class TreeNode:
        def __init__(self, data, left=None, right=None):
            self.data = data
            self.left = left
            self.right = right
    
    class Solution:
        def solve(self, root):
            if not root:
                return 0
            d = deque()
            d.append(root)
            count = 0
            while d:
                current = d.popleft()
                if current.left:
                    d.append(current.left)
                    if not current.right:
                        count += 1
                if current.right:
                    d.append(current.right)
                    if not current.left:
                        count += 1
            return count
    
    ob = Solution()
    root = TreeNode(9)
    root.left = TreeNode(7)
    root.right = TreeNode(10)
    root.left.right = TreeNode(8)
    root.right.right = TreeNode(6)
    print(ob.solve(root))

    इनपुट

    root = TreeNode(9)
    root.left = TreeNode(7)
    root.right = TreeNode(10)
    root.left.right = TreeNode(8)
    root.right.right = TreeNode(6)

    आउटपुट

    2

  1. पायथन में बाइनरी ट्री के लीफ और नॉन-लीफ नोड्स खोजने का प्रोग्राम पायथन में बाइनरी ट्री के लीफ और नॉन-लीफ नोड्स खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें दो संख्याओं की एक सूची ढूंढनी है जहां पहली संख्या ट्री में पत्तियों की संख्या है और दूसरी संख्या गैर-पत्ती नोड्स की संख्या है।इसलिए, यदि इनपुट इस तरह हैतो आउटपुट (3, 2) होगा, क्योंकि 3 पत्तियां और 2 गैर-पत्ती नोड्स हैं।इसे हल करने के लिए, हम इन चरणों का पा

  1. पायथन में बाइनरी ट्री पर k-लंबाई के पथ खोजने का प्रोग्राम पायथन में बाइनरी ट्री पर k-लंबाई के पथ खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है जिसमें अद्वितीय मान हैं और हमारे पास एक अन्य मान k है, हमें ट्री में k-लंबाई के अद्वितीय पथों की संख्या ढूंढनी है। पथ पैरेंट से चाइल्ड या चाइल्ड से पैरेंट की ओर जा सकते हैं। हम दो पथों को अलग मानेंगे जब कोई नोड एक पथ में दिखाई देता है लेकिन दूसरे में नहीं। उदाह

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

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