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

পাইথনে বাইনারি ট্রি থেকে জোড় মানের সব লিফ নোড ডিলিট করার প্রোগ্রাম


মনে করুন একটি বাইনারি ট্রি আছে, আমরা বারবার জোড় মানযুক্ত সব লিফ নোড ডিলিট করব। সব ডিলিট করার পর যদি শুধু রুট থাকে এবং সেটিও জোড় হয়, তবে সেটিও ডিলিট হবে।

ইনপুট এবং আউটপুট ট্রির ছবি দেওয়া আছে।

সমাধানের ধাপসমূহ

  • solve() ফাংশন সংজ্ঞায়িত করুন যা root নেয়
  • যদি root null হয়, তবে
    • null ফেরত দিন
  • root.left := solve(root.left)
  • root.right := solve(root.right)
  • যদি root লিফ হয় এবং root.data জোড় হয়, তবে
    • null ফেরত দিন
  • root ফেরত দিন

উদাহরণ

class TreeNode:
    def __init__(self, data, left = None, right = None):
        self.data = data
        self.left = left
        self.right = right

def inorder(root):
    if root:
        inorder(root.left)
        print(root.data, end = ', ')
        inorder(root.right)

class Solution:
    def solve(self, root):
        if not root:
            return None
        root.left = self.solve(root.left)
        root.right = self.solve(root.right)
        if not root.left and not root.right and root.data % 2 == 0:
            return None
        return root

ob = Solution()
root = TreeNode(13)
root.left = TreeNode(12)
root.right = TreeNode(14)
root.right.left = TreeNode(16)
root.right.right = TreeNode(22)
root.right.left.left = TreeNode(4)
root.right.left.right = TreeNode(7)
ob.solve(root)
inorder(root)

ইনপুট

root = TreeNode(13) root.left = TreeNode(12) root.right = TreeNode(14) root.right.left = TreeNode(16) root.right.right = TreeNode(22) root.right.left.left = TreeNode(4) root.right.left.right = TreeNode(7)

আউটপুট

13, 16, 7, 14,
  1. পাইথনে বাইনারি ট্রির সর্বাধিক প্রস্থ (Maximum Width) বের করার প্রোগ্রাম

  2. পাইথনে পোস্টঅর্ডার ও ইনঅর্ডার থেকে বাইনারি ট্রি তৈরি করুন

  3. পাইথনে পোস্টঅর্ডার থেকে বাইনারি সার্চ ট্রি তৈরি করুন

  4. পাইথনে বাইনারি ট্রি ইনভার্ট (Invert Binary Tree)