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

पायथन में n नोड्स वाले BST की संख्या गिनने का प्रोग्राम

मान लीजिए हमारे पास n अलग-अलग नोड्स हैं। सभी अलग हैं। हमें यह ढूंढना है कि उन्हें बाइनरी सर्च ट्री बनाने के लिए कितने तरीकों से व्यवस्थित किया जा सकता है। जैसा कि हम जानते हैं बाइनरी सर्च ट्री के लिए, लेफ्ट सबट्री हमेशा छोटे मान रखती है और राइट सबट्री बड़े मान रखती है।

इसे हल करने के लिए, हम कैटलन नंबर ढूंढेंगे। कैटलन नंबर C(n) n अलग-अलग कीज़ वाले बाइनरी सर्च ट्री को दर्शाता है। सूत्र इस प्रकार है:

$$C(n)=\frac{(2n)!}{(n+1)!\times n!}$$

तो, यदि इनपुट n = 3 है, तो आउटपुट 5 होगा क्योंकि

पायथन में n नोड्स वाले BST की संख्या गिनने का प्रोग्राम

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

  • ncr() फंक्शन परिभाषित करें। यह n, r लेगा
  • res := 1
  • यदि r > n - r, तो
    • r := n - r
  • i के लिए 0 से r - 1 तक की रेंज में, करें
    • res := res *(n - i)
    • res := (res/(i + 1)) का फ्लोर
  • res लौटाएं
  • मुख्य मेथड से, निम्न करें
  • c := ncr(2 * n, n)
  • c /(n + 1) का फ्लोर लौटाएं

उदाहरण

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

from math import factorial
def ncr(n, r):
    res = 1
    if r > n - r:
        r = n - r
    for i in range(r):
        res *= (n - i)
        res //= (i + 1)
    return res

def solve(n):
    c = ncr(2 * n, n)
    return c // (n + 1)

n = 3
print(solve(n))

इनपुट

3

आउटपुट

5
  1. पायथन में समकोण त्रिभुज के मध्य बिंदु और आधार के बीच का कोण खोजने का प्रोग्राम पायथन में समकोण त्रिभुज के मध्य बिंदु और आधार के बीच का कोण खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक समकोण त्रिभुज की दो भुजाएं हैं, ये भुजाएं AB और BC हैं। कर्ण AC का मध्य बिंदु M मानें। हमें M और BC के बीच का कोण ढूंढना है।उदाहरण के लिए, यदि इनपुट ab = 6 bc = 4 है, तो आउटपुट 56.309932474020215 होगा क्योंकि ab/bc का आर्क_टैन 0.9828 है लेकिन डिग्री में यह 56.31 है।समाधान दृष्

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

    मान लीजिए हमें एक बाइनरी ट्री दिया गया है और हमें बाइनरी ट्री में दो नोड्स के बीच की दूरी ढूंढनी है। हम दो नोड्स के बीच के एज को ग्राफ की तरह ढूंढते हैं और उनके बीच एज की संख्या या दूरी वापस करते हैं। ट्री के नोड की संरचना नीचे दी गई है: data: right: left: उदाहरण के लिए, यदि इनपुट है: और जिन नो

  1. पायथन में नोड और उसके वंशज के बीच अंतर खोजने का प्रोग्राम पायथन में नोड और उसके वंशज के बीच अंतर खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है, हमें किसी भी नोड और उसके वंशजों के बीच सबसे बड़ा निरपेक्ष अंतर ढूंढना है।उदाहरण के लिए, यदि इनपुट ट्री है:तो आउटपुट 7 होगा क्योंकि सबसे बड़ा निरपेक्ष अंतर नोड्स 8 और 1 के बीच है।समाधान दृष्टिकोणइसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे (पोस्ट-ऑर्डर