二叉排序树(二叉搜索树,二叉查找树)的(python)实现

二叉排序树,又叫做二叉搜索树或者二叉查找树,它具有以下性质:若左子树不为空,则左子树上所有节点的值均小于或等于它的根节点的值。若右子树不为空,则右子树上所有节点的值均大于或等于它的根节点的值。左、右子树也分别为二叉搜索树。构建二叉查找树及其操作class BSTNode: """ 定义一个二叉树节点类。 以讨论算法为主,忽略了一些诸如对数据类型进行判断的问题。 """ def __init__(self, data): """
摘要由CSDN通过智能技术生成

二叉排序树,又叫做二叉搜索树或者二叉查找树,它具有以下性质:

  1. 若左子树不为空,则左子树上所有节点的值均小于或等于它的根节点的值。
  2. 若右子树不为空,则右子树上所有节点的值均大于或等于它的根节点的值。
  3. 左、右子树也分别为二叉搜索树。

构建二叉查找树及其操作

class BSTNode:
    """
    定义一个二叉树节点类。
    以讨论算法为主,忽略了一些诸如对数据类型进行判断的问题。
    """
    def __init__(self, data):
        """
        初始化
        :param data: 节点储存的数据
        :param left: 节点左子树
        :param right: 节点右子树
        """
        self.data = data
        self.left = None
        self.right = None


class BinarySortTree:
    """
    基于BSTNode类的二叉排序树。
    """
    #初始化二叉排序树
    def __init__(self):
        self._root = None

    #判空
    def is_empty(self):
        return self._root is None

    #查找
    def search(self, key):
        """
        如果关键字的值等于cur_node的值,则返回,如果小于,则寻找左子树,反之,寻找右子树
        :param key: 关键字
        :return: 查询节点或None
        """
        cur_node = self._root
        while cur_node:
            if key < cur_node.data:
                cur_node = cur_node.left
            elif key > cur_node.data:
                cur_node = cur_node.right
            else:
                return cur_node.data
        return None





    def insert(self, key):
        """
        插入操作
        :param key:关键字
        :return: 布尔值
        """
        #如果树为空,则将关键字作为二叉树的根节点
        if self.is_empty():
            self._root = BSTNode(key)

        cur_node = self._root

        while True:
            if key <<
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值