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

Chương trình kiểm tra xem cây nhị phân có hoàn chỉnh hay không trong Python

Giả sử chúng ta có một cây nhị phân; chúng ta phải kiểm tra xem đây có phải là một cây nhị phân hoàn chỉnh hay không. Như chúng ta biết trong một cây nhị phân hoàn chỉnh, các cấp được lấp đầy bởi các nút ngoại trừ có thể là nút cuối cùng và tất cả các nút ở cấp cuối cùng ở bên trái càng xa càng tốt.

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

Chương trình kiểm tra xem cây nhị phân có hoàn chỉnh hay không trong Python

thì đầu ra sẽ là True

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

  • q:=một hàng đợi kết thúc kép

  • chèn root vào cuối q

  • cờ:=Sai

  • trong khi q không trống, thực hiện

    • temp:=phần tử sau khi xóa từ bên trái của q

    • nếu tạm thời là null, thì

      • flag:=True

    • ngược lại, khi cờ được đặt và tạm thời không null, thì

      • trả về Sai

    • nếu không,

      • chèn bên trái nhiệt độ vào cuối q

      • chèn quyền tạm thời vào cuối q

  • trả về True

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

Ví dụ

from collections import deque
class TreeNode:
   def __init__(self, data, left = None, right = None):
      self.data = data
      self.left = left
      self.right = right
class Solution:
   def solve(self, root):
      q = deque()
      q.append(root)
      flag = False
   while q:
      temp = q.popleft()
   if not temp:
      flag = True
      elif flag and temp:
   return False
   else:
      q.append(temp.left)
      q.append(temp.right)
   return True
ob = Solution()
root = TreeNode(9)
root.left = TreeNode(7)
root.right = TreeNode(10)
root.left.left = TreeNode(6)
root.left.right = TreeNode(8)
print(ob.solve(root))

Đầu vào

root = TreeNode(9) root.left = TreeNode(7) root.right = TreeNode(10) root.left.left = TreeNode(6) root.left.right = TreeNode(8)

Đầu ra

True