Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบไบนารีทรีเป็น BST หรือไม่ใน Python


สมมติว่าเรามีไบนารีทรี เราต้องตรวจสอบว่าเป็นแผนผังการค้นหาแบบไบนารีหรือไม่ ดังที่เราทราบ BST มีคุณสมบัติดังต่อไปนี้ -

  • โหนดทั้งหมดบนทรีย่อยด้านซ้ายมีขนาดเล็กกว่าค่าโหนดปัจจุบัน
  • โหนดทั้งหมดบนทรีย่อยด้านขวามีขนาดใหญ่กว่าค่าโหนดปัจจุบัน
  • คุณสมบัติเหล่านี้มีการเรียกซ้ำสำหรับโหนดทั้งหมด

ดังนั้นหากอินพุตเป็นแบบ

โปรแกรมตรวจสอบไบนารีทรีเป็น BST หรือไม่ใน Python

แล้วผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • x :=รายการลำดับการข้ามผ่านขององค์ประกอบต้นไม้
  • ถ้า x ถูกจัดเรียงแล้ว
    • คืนค่าจริง
  • คืนค่าเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

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):
      def inorder(root,l):
         if root is None:
            return
            inorder(root.left,l) l.append(root.data)
            inorder(root.right,l)
            l = []
            inorder(root,l)
         return l == sorted(l)
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(1)
root.right = TreeNode(9) root.right.left = TreeNode(7) root.right.right = TreeNode(10) root.right.left.left = TreeNode(6) root.right.left.right = TreeNode(8) print(ob.solve(root))

อินพุต

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

ผลลัพธ์

True