কম্পিউটার টিউটোরিয়াল

পাইথনে বাইনারি ট্রির লিফ এবং নন-লিফ নোড খুঁজে বের করার প্রোগ্রাম


মান ল করুন একটি বাইনারি ট্রি, আমাদের দুটি সংখ্যার একটি তালিকা ফেরত দিতে হবে যেখানে প্রথম সংখ্যাটি ট্রিতে লিফের সংখ্যা এবং দ্বিতীয় সংখ্যাটি নন-লিফ নোডের সংখ্যা।

যদি ইনপুট হয়:

পাইথনে বাইনারি ট্রির লিফ এবং নন-লিফ নোড খুঁজে বের করার প্রোগ্রাম

তবে আউটপুট হবে (3, 2), কারণ ৩টি লিফ এবং ২টি নন-লিফ নোড আছে।

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

  • যদি n null হয়, তবে (0, 0) ফেরত দিন।
  • যদি n.left এবং n.right null হয়, তবে (1, 0) ফেরত দিন।
  • left := solve(n.left), right := solve(n.right)
  • (left[0] + right[0], 1 + left[1] + right[1]) ফেরত দিন।

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

উদাহরণ

class TreeNode:    def __init__(self, data, left = None, right = None):       self.val = data       self.left = left       self.right = right class Solution:    def solve(self, n):       if not n:          return 0, 0       if not n.left and not n.right:          return 1, 0       left, right = self.solve(n.left), self.solve(n.right)       return left[0] + right[0], 1 + left[1] + right[1] ob = Solution() root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2) print(ob.solve(root))

ইনপুট

root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2)

আউটপুট

(3, 2)

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

  2. পাইথনে বাইনারি ট্রির রুট থেকে লিফ পর্যন্ত সবচেয়ে লম্বা পাথের যোগফল খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে বাইনারি ট্রিতে k-দৈর্ঘ্যের পথের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে বাইনারি ট্রির সর্বাধিক প্রস্থ (Maximum Width) বের করার প্রোগ্রাম