เมื่อจำเป็นต้องเรียงลำดับแผนผังการค้นหาแบบไบนารี คลาสจะถูกสร้างขึ้นและมีการกำหนดเมธอดภายในคลาสดังกล่าวซึ่งดำเนินการต่างๆ เช่น การแทรกองค์ประกอบ และดำเนินการข้ามผ่านแบบไม่เรียงลำดับ
ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน -
ตัวอย่าง
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' ถูกสร้างขึ้น
-
ผู้ใช้ใช้รายการหมายเลข
-
ต้นไม้ถูกสร้างขึ้นโดยใช้สิ่งนี้
-
รายการถูกจัดเรียงและดำเนินการข้ามผ่านแบบไม่เรียงลำดับ
-
เอาต์พุตที่เกี่ยวข้องจะแสดงบนคอนโซล