二叉树排序简介
二叉树排序是比较有意思的一种排序方法,而且也便于操作。二叉树的排序过程主要是二叉树的建立和遍历的过程。例如有一组数据"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)