二叉樹排序簡介
二叉樹排序是比較有意思的一種排序方法,而且也便於操作。二叉樹的排序過程主要是二叉樹的建立和遍歷的過程。例如有一組數據"3,5,7,20,43,2,15,30",則二叉樹的建立過程如下:
- 首先將第一個數據3放入根節點
- 將數據5與根節點中的數據3比較,由5大於3,則將5放入3的右子樹中
- 將數據7與根節點中的數據3比較,由於7大於3,則應將7放入3的右子樹中,由於3已經有右兒子5,則將7與5進行比較,因爲7大於5,應將7放入5的右子樹中
- 將數據20與根節點3進行比較,由於20大於3,則應將20放入3的右子樹,重複比較,最終將20放到7的右子樹中;
- 將數據43與樹中的節點值進行比較,最終將其放入20的右子樹中
- 以此類推與比較…
下面用例子作爲真實效果模擬
例子:python用列表實現二叉樹排序
實驗效果:
實驗代碼:
# -*- coding:utf-8 -*-
class BTree:
def __init__(self, value):
self.left = None
self.data = value
self.right = None
def insertLeft(self, value):
self.left = BTree(value)
return self.left
def insertRight(self, value):
self.right = BTree(value)
return self.right
def show(self):
print(self.data)
def inorder(node):
if node.data:
if node.left:
inorder(node.left)
node.show()
if node.right:
inorder(node.right)
def insert(node, value):
if value > node.data:
if node.right:
insert(node.right,value)
else:
node.insertRight(value)
else:
if node.left:
insert(node.left, value)
else:
node.insertLeft(value)
if __name__ == '__main__':
l = [3,5,7,20,43,2,15,30]
Root = BTree(l[0])
node = Root
for i in range(1,len(l)):
insert(Root,l[i])
print('*************************')
print(" 從小到大")
print('*************************')
inorder(Root)