ধরা যাক একটি বাইনারি ট্রির রুট আছে, আমাদের এটিকে ইনভার্ট করতে হবে যাতে বাম ও ডান সাবট্রি এবং তাদের সন্তানরা রিকার্সিভলি এক্সচেঞ্জ হয়।
ইনপুট ট্রি হলে আউটপুট ইনভার্টেড ট্রি।
সমাধানের ধাপসমূহ
- 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,