python写二叉搜索树的插入

尝试用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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值