尝试用python写二叉搜索树的插入操作,执行效率非常低,仅作思路参考
不解释算法,很多讲数据结构的博客,都讲得不错。
import numpy
#pip install numpy,用于生成测试数据
class Node():
def __init__(self, item):
self.value = item
self.left = None
self.right = None
class Tree():
def __init__(self):
self.root = None
def add(self, node, item):
# 如果空 直接插入
if node == None:
return Node(item)
if node.value == item:
return
elif item > node.value:
node.right = self.add(node.right, item)
else:
node.left = self.add(node.left, item)
return node
# 封装增加节点的操作。
def appendNode(self,item):
self.root = self.add(self.root, item)
def getPrint(self, node):
#从小到大打印整个树
if not node:
return
self.getPrint(node.left)
print(node.value,end=' ')
self.getPrint(node.right)
tree1 = Tree()
#生成随机序列作为二叉树插入数据
numbersTest = numpy.random.permutation(range(1,10))
print('插入顺序为:',str(numbersTest))
for num in numbersTest:
tree1.appendNode(num)
print('二插树按序打印:',end='')
tree1.getPrint(tree1.root)