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

पायथन में BST में Kवां सबसे छोटा एलिमेंट

मान लीजिए हमारे पास एक बाइनरी सर्च ट्री है। हमें उस BST में Kवां सबसे छोटा एलिमेंट ढूंढना है। इसलिए यदि ट्री इस तरह है -

पायथन में BST में Kवां सबसे छोटा एलिमेंट

इसलिए यदि हम 3रा सबसे छोटा एलिमेंट ढूंढना चाहते हैं, तो k = 3, और परिणाम 7 होगा।

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

  • nodes नामक एक खाली लिस्ट बनाएं
  • solve(root, nodes) कॉल करें
  • nodes के k - 1वें एलिमेंट को लौटाएं
  • solve मेथड बनाया गया है, यह रूट और nodes ऐरे लेता है, यह इस तरह काम करेगा -
  • यदि रूट null है, तो लौट जाएं
  • solve(रूट का लेफ्ट, nodes)
  • रूट की वैल्यू को nodes ऐरे में जोड़ें
  • solve(रूट का राइट, nodes)

यह इनऑर्डर ट्रैवर्सल का उपयोग करता है जो BST में एलिमेंट्स को सॉर्टेड क्रम में देता है।

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

उदाहरण

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

def insert(temp, data):
    que = []
    que.append(temp)
    while len(que):
        temp = que[0]
        que.pop(0)
        if not temp.left:
            temp.left = TreeNode(data)
            break
        else:
            que.append(temp.left)
        if not temp.right:
            temp.right = TreeNode(data)
            break
        else:
            que.append(temp.right)

def make_tree(elements):
    Tree = TreeNode(elements[0])
    for element in elements[1:]:
        insert(Tree, element)
    return Tree

class Solution(object):
    def kthSmallest(self, root, k):
        nodes = []
        self.solve(root, nodes)
        return nodes[k - 1]

    def solve(self, root, nodes):
        if root is None:
            return
        self.solve(root.left, nodes)
        nodes.append(root.data)
        self.solve(root.right, nodes)

ob1 = Solution()
tree = make_tree([10, 5, 15, 2, 7, 13])
print(ob1.kthSmallest(tree, 3))

इनपुट

[10,5,15,2,7,13] 3

आउटपुट

7
  1. C++ में BST के दो नोड्स के बीच अधिकतम तत्व C++ में BST के दो नोड्स के बीच अधिकतम तत्व

    समस्या कथन N तत्वों का एक ऐरे और दो पूर्णांक A, B दिए गए हैं जो दिए गए ऐरे से संबंधित हैं। arr[0] से arr[n-1] तक तत्व डालकर एक बाइनरी सर्च ट्री बनाएं। कार्य A से B तक के पथ में अधिकतम तत्व ढूंढना है। उदाहरण यदि ऐरे है {24, 23, 15, 36, 19, 41, 25, 35} तो हम BST को निम्नानुसार बना सकते हैं: यदि हम

  1. पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की सूची है। हमारे पास x नामक एक और संख्या भी है। हमें nums से उन सभी नंबरों को फ़िल्टर करके ढूंढना है जो x से कम हैं। पायथन में filter() मेथड होता है जो फंक्शन को आर्गुमेंट के रूप में लेता है और इस फंक्शन का उपयोग करके फ़िल्टर करता है। तो, यदि इनपुट nums = [1,5

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

    मान लीजिए हमारे पास एक बाइनरी सर्च ट्री और एक पूर्णांक k है, हमें ट्री में kवां सबसे छोटा मान ढूंढना है। उदाहरण के लिए, यदि इनपुट निम्न ट्री है: k = 3, तो आउटपुट 7 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (इटरेटिव इनऑर्डर ट्रैवर्सल): stack := [], i := 0, ans := -1। जब तक stack खाली