二叉排序树的查找、插入、创建、结点删除python实现(大话数据结构版本)

本文介绍了如何使用Python实现二叉排序树的基本操作,包括定义结点结构、查找、插入、创建和删除结点。删除结点时,会先查找目标结点,如果存在则执行删除操作,否则失败。删除操作涉及三种情况:左子树为空、右子树为空或左右子树均不为空。对于后一种情况,需要找到一个合适的结点s来替代被删除的结点T,s结点的特性是小于T的右子节点且大于T的左子节点,并且其右子树为空。

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

定义结点

首先定义一个二叉链表结点结构的定义

class Node(object):
    """节点定义,包括数据项、左孩子、右孩子"""
    def __init__(self, data):
        self.data = data
        self.lchild = None
        self.rchild = None

查找

def searchTree(T, key, f, p):
    """查找
        T:树;
        key:查找的节点
        f:指向T的双亲,初始值为None
        p:若未查找到,则返回最后一个访问的叶子结点;若查找到,则返回搜索到的结点"""
    if not T:
        """T为空树,查找失败
            p为空树的双亲结点,即访问的最后一个结点"""
        p = f
        return False, p
    elif key == T.data:
        """查找成功
            p为当前查找的结点"""
        p = T
        return True, p
    elif key > T.data:
        """查找右子树"""
        return searchTree(T.rchild, key, T, p)
    else:
        """查找左子树"""
        return searchTree(T.lchild, key, T, p)

插入

def insertTree(T, key):
    """插入"""
    is_exist, p = searchTree(T, key, None,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值