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

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

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

इसे हल करने के लिए, हम कैटलन संख्या ज्ञात करेंगे। कैटलन संख्या 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
  • मैं के लिए 0 से r -1 की सीमा में, करो
    • res :=res *(n - i)
    • res :=(res/(i + 1)) की मंजिल
  • रिटर्न रेस
  • मुख्य विधि से, निम्न कार्य करें
  • 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. पायथन का उपयोग करके समान लेबल वाले उप-वृक्ष में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास n नोड्स वाला एक रूटेड सामान्य ट्री है, जिसके नोड्स 0 से n-1 तक गिने जाते हैं। प्रत्येक नोड में लोअरकेस अंग्रेजी अक्षर वाला एक लेबल होता है। लेबल्स को लेबल एरे में इनपुट के रूप में दिया जाता है, जहां लेबल्स [i] में ith नोड के लिए लेबल होता है। पेड़ को किनारे की सूची द्वारा दर्श

  1. पायथन में एक श्रेणी में नोड्स की संख्या खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक बीएसटी है, और हमारे पास बाएं और दाएं सीमाएं एल और आर भी हैं, हमें रूट में उन सभी नोड्स की गिनती ढूंढनी है जिनके मान एल और आर (समावेशी) के बीच मौजूद हैं। तो, अगर इनपुट पसंद है l =7, r =13, तो आउटपुट 3 होगा, क्योंकि तीन नोड हैं:8, 10, 12. इसे हल करने के लिए, हम इन चरणों

  1. एक संख्या के भाज्य में अनुगामी शून्यों की गणना करने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक पूर्णांक n दिया गया है, हमें भाज्य में अनुगामी शून्यों की संख्या गिनने की आवश्यकता है। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # trailing zero def find(n):    # Initialize count &nb