二叉搜索树

本文提供了一种使用Python实现二叉搜索树的方法,包括节点的插入、删除及查找等功能。通过具体实例演示了二叉搜索树的基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二叉搜索树的python实现

本文给出二叉搜索树的python代码实现,关于二叉搜索树的相关知识,任意找一本关于数据结构的树一定会有详细的介绍,我就不说了。下面直接给出相关的python代码实现,包括二叉搜索树的插入,删除和查找节点的完整代码。

  • 代码实现
#
# Binary Search Tree
#
class Node(object):
    def __init__(self, data):
        self.data = data
        self.left = None
        self.right = None

class BinarySearchTree(object):
    def insert(self, root, node):
        if root is None:
            return node
        if root.data < node.data:
            root.right = self.insert(root.right, node)
        else:
            root.left = self.insert(root.left, node)

        return root     

    def delete(self, root, data):
        if root is None:
            return root
        elif data < root.data:
            root.left = self.delete(root.left, data)
        elif data > root.data:
            root.right = self.delete(root.right, data)

        else:
            if root.left is None and root.right is None:
                root = None
            elif root.left is None:
                root = root.right
            elif root.right is None:
                root = root.left
            else:
                temp = root.right
                while temp.left is not None:
                    temp = temp.left
                root.data = temp.data
                root.right = self.delete(root.right, temp.data)
        return root

    def findData(self, root, data):
        if root is None:
            return False
        elif data == root.data:
            return True
        elif data < root.data:
            return self.findData(root.left, data)
        else:
            return self.findData(root.right, data)


    def printTree(self, root):
        if not root:
            return 
        else:
            self.printTree(root.left)
            print(root.data)
            self.printTree(root.right)

r = Node(3)
node = BinarySearchTree()
nodelist = [1, 8, 5, 12, 14, 6, 15, 7, 127]
for nde in nodelist:
    node.insert(r, Node(nde))

print('---------------BinarySearchTree------------------')
node.printTree(r)
print('--------------------delete-----------------------')
node.delete(r, 14)
node.printTree(r)
print('---------------------find------------------------')
flag = node.findData(r, 14)
if flag:
    print('We find the data!')
else:
    print('Cannot find the data!')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值