使用二叉搜索树进行排序的 Python 程序

pythonserver side programmingprogramming更新于 2023/12/23 11:47:00

当需要对二叉搜索树进行排序时,会创建一个类,并在其中定义执行插入元素和执行中序遍历等操作的方法。

下面是相同的演示 −

示例

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('输入数字列表... ').split()
my_list = [int(x) for x in my_list]
for x in my_list:
   my_instance.add_val(x)
print('排序列表: ')
print(my_instance.inorder_traversal())

输出

输入数字列表... 67 54 89 0 11 34 99
排序列表:
0 11 34 54 67 89 99

解释

  • ‘BinSearchTreeNode’创建了具有所需属性的类。

  • 它有一个‘init’函数,用于将‘left’、‘right’和‘parent’节点分配给‘None’。

  • 定义了另一个名为‘insert_elem’的方法,用于帮助将节点添加到树中。

  • 定义了另一个名为‘inorder_traversal’的方法,用于帮助对树执行中序遍历。

  • 定义了另一个名为‘BinSearchTree’的类。

  • 它将根设置为‘None’。

  • 它有一个名为‘inorder_traversal’的方法可帮助对树执行中序遍历。

  • 定义了另一个名为‘add_val’的方法,可帮助向树中添加节点。

  • 创建‘BinSearchTree’的一个实例。

  • 用户获取数字列表。

  • 使用此方法创建一棵树。

  • 对列表进行排序,并执行中序遍历。

  • 相关输出显示在控制台上。


相关文章