使用二叉搜尋樹排序的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”的例項。

  • 使用者輸入數字列表。

  • 使用此列表建立一個樹。

  • 對列表進行排序,並執行其中序遍歷。

  • 在控制檯上顯示相關的輸出。

更新於:2021年4月16日

693 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告