কম্পিউটার

পাইথনে 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) এর রিটার্ন ফ্লোর

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

<প্রে>ম্যাথ ইম্পোর্ট ফ্যাক্টোরিয়ালডেফ ncr(n, r) থেকে:res =1 যদি r> n - r:r =n - r i এর জন্য রেঞ্জ(r):res *=(n - i) res //=( i + 1) রিটার্ন resdef solve(n):c =ncr(2 * n, n) রিটার্ন c // (n + 1)n =3print(solve(n))

ইনপুট

3

আউটপুট

5

  1. পাইথন ব্যবহার করে একই লেবেল সহ সাব-ট্রিতে নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে রিকার্সিভ ইনডেক্সিং সহ উপাদানগুলির একটি সেটে উপস্থিত উপাদানগুলির সংখ্যা গণনা করার প্রোগ্রাম

  3. পাইথনে একটি পরিসরে নোডের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি সংখ্যার ফ্যাক্টোরিয়ালের অনুগামী শূন্য গণনা করতে