কম্পিউটার

পাইথনে বাইনারি ট্রি ইনভার্ট করুন


ধরুন আমাদের একটি বাইনারি গাছ আছে। আমাদের কাজ হল একটি উল্টানো বাইনারি ট্রি তৈরি করা। তাই গাছ যদি নিচের মত হয় -

পাইথনে বাইনারি ট্রি ইনভার্ট করুন

উল্টানো গাছের মত হবে

পাইথনে বাইনারি ট্রি ইনভার্ট করুন

এটি সমাধান করার জন্য, আমরা একটি পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করব

  • যদি রুটটি শূন্য হয়, তাহলে ফিরুন
  • বাম এবং ডান পয়েন্টার অদলবদল করুন
  • পুনরাবৃত্তভাবে বাম সাবট্রি এবং ডান সাবট্রি সমাধান করুন

উদাহরণ (পাইথন)

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

class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
def make_tree(elements):
   Tree = TreeNode(elements[0])
   for element in elements[1:]:
      insert(Tree, element)
   return Tree
def height(root):
   if root is None:
      return 0
   else :
      # Compute the height of left and right subtree
      l_height = height(root.left)
      r_height = height(root.right)
      #Find the greater one, and return it
      if l_height > r_height :
         return l_height+1
      else:
         return r_height+1
def print_given_level(root, level):
   if root is None:
      return
   if level == 1:
      print(root.data,end = ',')
   elif level > 1 :
      print_given_level(root.left , level-1)
      print_given_level(root.right , level-1)
def level_order(root):
   h = height(root)
   for i in range(1, h+1):
      print_given_level(root, i)
def insert(temp,data):
   que = []
   que.append(temp)
   while (len(que)):
      temp = que[0]
      que.pop(0)
      if (not temp.left):
         if data is not None:
            temp.left = TreeNode(data)
         else:
            temp.left = TreeNode(0)
         break
      else:
         que.append(temp.left)
      if (not temp.right):
         if data is not None:
            temp.right = TreeNode(data)
         else:
            temp.right = TreeNode(0)
         break
      else:
         que.append(temp.right)
class Solution(object):
   def invertTree(self, root):
      """
      :type root: TreeNode
      :rtype: TreeNode
      """
      self.solve(root)
      return root
   def solve(self,root):
      if not root:
         return
      temp = root.left
      root.left = root.right
      root.right = temp
      self.solve(root.left)
      self.solve(root.right)
tree1 = make_tree([1,2,2,3,4,None,3])
ob1 = Solution()
tree2 = ob1.invertTree(tree1)
level_order(tree2)

ইনপুট

[1,2,2,3,4,None,3]

আউটপুট

1,2,2,3,None,4,3,

  1. পাইথনে বাইনারি ট্রি ব্যাস

  2. পাইথনে একটি বাইনারি অনুসন্ধান গাছের সর্বনিম্ন সাধারণ পূর্বপুরুষ

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

  4. পাইথনে বাইনারি গাছের সর্বোচ্চ গভীরতা