เมื่อจำเป็นต้องเรียงลำดับแผนผังการค้นหาแบบไบนารี คลาสจะถูกสร้างขึ้นและมีการกำหนดเมธอดภายในคลาสดังกล่าวซึ่งดำเนินการต่างๆ เช่น การแทรกองค์ประกอบ และดำเนินการข้ามผ่านแบบไม่เรียงลำดับ
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ตัวอย่าง
class BinSearchTreeNode: def __init__(self, key): self.key = key self.left = None self.right = None self.parent = None def insert_elem(self, node): if self.key > node.key: if self.left is None: self.left = node node.parent = self else: self.left.insert_elem(node) elif self.key <= node.key: if self.right is None: self.right = node node.parent = self else: self.right.insert_elem(node) def inorder_traversal(self): if self.left is not None: self.left.inorder_traversal() print(self.key, end=' ') if self.right is not None: self.right.inorder_traversal() class BinSearchTree: def __init__(self): self.root = None def inorder_traversal(self): if self.root is not None: self.root.inorder_traversal() def add_val(self, key): new_node = BinSearchTreeNode(key) if self.root is None: self.root = new_node else: self.root.insert_elem(new_node) my_instance = BinSearchTree() my_list = input('Enter the list of numbers... ').split() my_list = [int(x) for x in my_list] for x in my_list: my_instance.add_val(x) print('Sorted list: ') print(my_instance.inorder_traversal())
ผลลัพธ์
Enter the list of numbers... 67 54 89 0 11 34 99 Sorted list: 0 11 34 54 67 89 99
คำอธิบาย
-
คลาส 'BinSearchTreeNode' พร้อมแอตทริบิวต์ที่จำเป็นจะถูกสร้างขึ้น
-
มีฟังก์ชัน 'init' ที่ใช้กำหนดโหนด 'left', 'right' และ 'parent' ให้กับ 'None'
-
มีการกำหนดวิธีการอื่นที่ชื่อว่า "insert_elem" ซึ่งช่วยเพิ่มโหนดให้กับทรี
-
มีการกำหนดวิธีการอื่นที่ชื่อว่า 'inorder_traversal' ซึ่งช่วยดำเนินการข้ามเส้นทางที่ไม่เป็นระเบียบบนทรี
-
มีการกำหนดคลาสอื่นชื่อ 'BinSearchTree'
-
มันตั้งค่ารูทเป็น 'ไม่มี
-
มีเมธอดชื่อ 'inorder_traversal' ที่ช่วยดำเนินการตามคำสั่งบนทรี
-
มีการกำหนดวิธีการอื่นที่ชื่อว่า 'add_val' ซึ่งช่วยเพิ่มโหนดให้กับทรี
-
อินสแตนซ์ของ 'BinSearchTree' ถูกสร้างขึ้น
-
ผู้ใช้ใช้รายการหมายเลข
-
ต้นไม้ถูกสร้างขึ้นโดยใช้สิ่งนี้
-
รายการถูกจัดเรียงและดำเนินการข้ามผ่านแบบไม่เรียงลำดับ
-
เอาต์พุตที่เกี่ยวข้องจะแสดงบนคอนโซล