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

পাইথনে বাইনারি ট্রি ইনভার্ট (উল্টানো) করার প্রোগ্রাম


ধরা যাক একটি বাইনারি ট্রির রুট আছে, আমাদের এটিকে ইনভার্ট করতে হবে যাতে বাম ও ডান সাবট্রি এবং তাদের সন্তানরা রিকার্সিভলি এক্সচেঞ্জ হয়।

ইনপুট ট্রি হলে আউটপুট ইনভার্টেড ট্রি।

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

  • solve() মেথড সংজ্ঞায়িত করুন যা node নেয়।
  • যদি root null হয়, ফেরত দিন।
  • root.left := solve(root.right)
  • root.right := solve(root.left) [নোট: এটি বাগ-ইনভার্ট করার আগে root.left ইতিমধ্যে বদলায় গেছে, সঠিক কোডে টেম্পেরারি ভেরিয়েবল ব্যবহার করা উচিত]
  • root ফেরত দিন।

উদাহরণ কোড

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

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

class Solution:
    def solve(self, root):
        if not root:
            return
        root.left, root.right = self.solve(root.right), self.solve(root.left)
        return root

ob = Solution()
root = TreeNode(5)
root.left = TreeNode(4)
root.right = TreeNode(10)
root.right.left = TreeNode(7)
root.right.right = TreeNode(15)
inv = ob.solve(root)
inorder(inv)

ইনপুট

root = TreeNode(5) root.left = TreeNode(4) root.right = TreeNode(10) root.right.left = TreeNode(7) root.right.right = TreeNode(15)

আউটপুট

15, 10, 7, 5, 4,
  1. পাইথনে বাইনারি ট্রি BST কিনা যাচাই করার প্রোগ্রাম

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

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

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