কম্পিউটার

একটি BST এর প্রতিটি অভ্যন্তরীণ নোড পাইথনে ঠিক একটি শিশু আছে কিনা তা পরীক্ষা করুন


ধরুন আমাদের একটি বাইনারি সার্চ ট্রি (BST) এর প্রি-অর্ডার ট্রাভার্সাল আছে। আমাদের প্রতিটি অভ্যন্তরীণ নোডে শুধুমাত্র একটি শিশু আছে কিনা তা পরীক্ষা করতে হবে৷

সুতরাং, যদি ইনপুটটি প্রি-অর্ডারের মত হয় =[22, 12, 13, 15, 14], তাহলে আউটপুটটি True হবে কারণ BST এর মত −

একটি BST এর প্রতিটি অভ্যন্তরীণ নোড পাইথনে ঠিক একটি শিশু আছে কিনা তা পরীক্ষা করুন

এটি সমাধান করার জন্য, আমরা একটি কার্যকর পদ্ধতি অনুসরণ করতে পারি। যেহেতু একটি নোডের সমস্ত ডিসেডেন্ট হয় ছোট বা বড়, তাহলে আমরা এই ধাপগুলি অনুসরণ করতে পারি -

  • নোডের পরবর্তী প্রি-অর্ডার উত্তরাধিকারী পান

  • নোডের শেষ প্রি-অর্ডার উত্তরাধিকারী পান

  • এখন যখন উভয় উত্তরসূরী বর্তমান নোডের চেয়ে কম বা বেশি হয় তখন আবার চেক করুন অন্যথায় মিথ্যা ফেরত দিন।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • পরবর্তী :=0, শেষ :=0
  • আমি রেঞ্জ 0 থেকে প্রি-অর্ডারের আকার - 1 এর জন্য, করুন
    • পরবর্তী :=প্রি-অর্ডার[i] - প্রি-অর্ডার[i+1]
    • শেষ :=প্রি-অর্ডার[i] - প্রি-অর্ডারের শেষ মান
    • যদি পরবর্তী * শেষ <0 হয়, তাহলে
      • মিথ্যে ফেরত দিন
  • সত্য ফেরান

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

উদাহরণ

def solve(preorder):
next = 0
last = 0
for i in range(len(preorder)-1):
next = preorder[i] - preorder[i+1]
last = preorder[i] - preorder[-1]
if next * last < 0:
return False
return True
preorder = [22, 12, 13, 15, 14] print(solve(preorder))

ইনপুট

[22, 12, 13, 15, 14]

আউটপুট

True

  1. পাতা ব্যতীত প্রতিটি নোডের মান পাইথনে বাচ্চাদের মূল্যের যোগফল কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. একটি মান বিএসটি-তে আছে কিনা পাইথনে নেই তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. পাইথনে একটি স্ট্রিং অন্তত একটি অক্ষর এবং একটি সংখ্যা আছে কিনা তা কিভাবে পরীক্ষা করবেন?

  4. পাইথনে একটি স্ট্রিং এর বর্ণমালা বা সংখ্যা আছে কিনা তা আমি কিভাবে পরীক্ষা করব?