Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình xóa tất cả các lá có giá trị chẵn khỏi cây nhị phân trong Python

Giả sử chúng ta có, chúng ta có một cây nhị phân, chúng ta sẽ xóa nhiều lần tất cả các lá có giá trị chẵn. Sau khi xóa tất cả, nếu nó chỉ có gốc với các giá trị chẵn thì nó cũng sẽ bị xóa.

Vì vậy, nếu đầu vào giống như

Chương trình xóa tất cả các lá có giá trị chẵn khỏi cây nhị phân trong Python


thì đầu ra sẽ là

Chương trình xóa tất cả các lá có giá trị chẵn khỏi cây nhị phân trong Python


Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Định nghĩa một hàm giải quyết (). Điều này sẽ bắt nguồn từ gốc

  • nếu root là null thì

    • trả về null

  • left of root:=giải quyết (left of root)

  • quyền của người chủ:=giải quyết (quyền của người gốc)

  • nếu root là lá và dữ liệu của root là chẵn thì

    • trả về null

  • trả về thư mục gốc

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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)

Đầu vào

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)

Đầu ra

13, 16, 7, 14,