使用二叉搜尋樹排序的Python程式
當需要對二叉搜尋樹進行排序時,會建立一個類,並在其中定義執行插入元素和執行中序遍歷等操作的方法。
下面是相同的演示 -
示例
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”的類。
它將根節點設定為“None”。
它有一個名為“inorder_traversal”的方法,該方法有助於對樹執行中序遍歷。
定義另一個名為“add_val”的方法,該方法有助於將節點新增到樹中。
建立一個“BinSearchTree”的例項。
使用者輸入數字列表。
使用此列表建立一個樹。
對列表進行排序,並執行其中序遍歷。
在控制檯上顯示相關的輸出。
廣告