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

पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम


मान लीजिए हमारे पास एक BST है, और हमारे पास बाएं और दाएं बाउंड l और r भी हैं, हमें रूट में उन सभी नोड्स की संख्या गिननी है जिनके मान l और r के बीच हैं (सम्मिलित)।

उदाहरण के लिए, यदि इनपुट जैसा है: पायथन में BST में रेंज में नोड्स की संख्या खोजने का प्रोग्राम l = 7, r = 13, तो आउटपुट 3 होगा, क्योंकि तीन नोड्स हैं: 8, 10, 12।

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

  • stack := एक स्टैक और पहले रूट डालें, count := 0
  • जब तक स्टैक खाली नहीं है, करें:
    • node := स्टैक का शीर्ष तत्व, और पॉप करें
    • यदि node null नहीं है, तो:
      • यदि l <= node का डेटा <= r, तो:
        • count := count + 1
        • स्टैक में node का दायां और बायां डालें
      • अन्यथा यदि node का डेटा < l, तो स्टैक में node का दायां डालें
      • अन्यथा, स्टैक में node का बायां डालें
  • 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, l, r):
        stack, count = [root], 0
        while stack:
            node = stack.pop()
            if node:
                if l <= node.data <= r:
                    count += 1
                    stack += [node.right, node.left]
                elif node.data < l:
                    stack += [node.right]
                else:
                    stack += [node.left]
        return count

ob = Solution()
root = TreeNode(12)
root.left = TreeNode(8)
root.right = TreeNode(15)
root.left.left = TreeNode(3)
root.left.right = TreeNode(10)
print(ob.solve(root, 7, 13))

इनपुट

root = TreeNode(12) root.left = TreeNode(8) root.right = TreeNode(15) root.left.left = TreeNode(3) root.left.right = TreeNode(10) 7,13

आउटपुट

3
  1. Python से बाइनरी ट्री में गुड लीफ नोड पेयर्स की संख्या कैसे ढूंढें? Python से बाइनरी ट्री में गुड लीफ नोड पेयर्स की संख्या कैसे ढूंढें?

    दो लीफ नोड्स का पेयर गुड है अगर उनके बीच का सबसे छोटा पथ ≤ d है। पोस्ट-ऑर्डर DFS से सभी गुड पेयर्स काउंट करें। एल्गोरिदम रिकर्सिव util(root) रिटर्न करता है: प्रत्येक लीफ के लिए [depth_from_root, 0] (दूसरा मान अपडेट होता है)। लेफ्ट और राइट सबट्री के लीफ्स के लिए: डेप्थ्स इन्क्रीमेंट करें। सभी लेफ्ट-

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्

  1. पायथन प्रोग्राम: किसी संख्या के सम गुणनखंडों का योग ज्ञात करें पायथन प्रोग्राम: किसी संख्या के सम गुणनखंडों का योग ज्ञात करें

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