Python एल्गोरिदम

Python में बाइनरी सर्च ट्री

बाइनरी सर्च ट्री छोटे मानों को बाएँ सबट्री में और बड़े मानों को दाएँ सबट्री में रखता है, इसलिए हर तुलना बचे हुए ट्री का आधा हिस्सा हटा देती है।

में बाइनरी सर्च ट्री क्या है?

बाइनरी सर्च ट्री छोटे मानों को बाएँ सबट्री में और बड़े मानों को दाएँ सबट्री में रखता है, इसलिए हर तुलना बचे हुए ट्री का आधा हिस्सा हटा देती है।

Python में बाइनरी सर्च ट्री बनाएँ: मान जोड़ें, उन्हें खोजें और क्रम से दिखाएँ।

इसका उपयोग कब करें?

  • Algorithms और data structures की कार्यप्रणाली समझें।
  • हर चरण देखें और edge cases जाँचें।
  • समय और memory की जटिलता की तुलना करें।

देखें यह कैसे काम करता है

मान जोड़कर देखें कि वे कहाँ जाते हैं, कोई मान खोजकर उसका रास्ता देखें, और ट्रैवर्सल चलाकर विज़िट का क्रम देखें।

उदाहरण कोड

कोड चलाएँ →
main.py
class Node:
    def __init__(self, value):
        self.value = value
        self.left = None   # smaller values go left
        self.right = None  # larger values go right


def insert(node, value):
    if node is None:
        return Node(value)
    if value < node.value:
        node.left = insert(node.left, value)
    elif value > node.value:
        node.right = insert(node.right, value)
    return node


def contains(node, value):
    # Each comparison discards one whole subtree.
    while node is not None:
        if value == node.value:
            return True
        node = node.left if value < node.value else node.right
    return False


def inorder(node):
    # Left subtree, node, right subtree: visits values in sorted order.
    if node is None:
        return []
    return inorder(node.left) + [node.value] + inorder(node.right)


def height(node):
    if node is None:
        return 0
    return 1 + max(height(node.left), height(node.right))


root = None
for value in [50, 30, 70, 20, 40, 60, 80]:
    root = insert(root, value)

print("inorder:", inorder(root))
print("contains 60:", contains(root, 60))
print("contains 65:", contains(root, 65))
print("height:", height(root))

अपेक्षित आउटपुट

inorder: [20, 30, 40, 50, 60, 70, 80]
contains 60: True
contains 65: False
height: 3

यह कैसे काम करता है

insert() रूट से नीचे चलकर मान को उसकी सही जगह जोड़ता है। contains() सिर्फ़ एक रास्ते पर चलता है, जिसमें संतुलित ट्री में O(log n) कदम लगते हैं। inorder ट्रैवर्सल बायाँ, नोड, दायाँ क्रम में जाता है, इसलिए मान क्रम में निकलते हैं।

मान बदलें और Python इंस्टॉल किए बिना CodeUtility ऑनलाइन Python कंपाइलर में प्रोग्राम चलाएँ।

अभ्यास के कार्य

बड़े dataset पर जाने से पहले input बदलें और edge cases की जाँच करें।

  1. खाली input, एक element और duplicate values जाँचें।
  2. हर चरण के बाद state दिखाएँ।
  3. Performance को दूसरे solution से तुलना करें।
Python IDE में चलाएँ →

चैलेंज से अभ्यास करें

इस पाठ में सीखी बात से एक असली समस्या हल करें। हर चैलेंज ब्राउज़र में चलता है, तुरंत टेस्ट और AI रिव्यू के साथ।

सभी चैलेंज