二叉搜索树的相关操作(递归实现)

本文详细介绍了二叉搜索树的概念,以及如何使用递归实现按值插入、按值查找和按值删除等操作。在二叉搜索树中,左子树的节点值小于根节点,根节点值小于右子树的节点值。插入、查找和删除操作根据这个特性进行递归处理。

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

本文章主要介绍二叉搜索树的概念以及二叉搜索树的相关操作:按值插入、按值查找、按值删除。

1. 二叉搜索树的概念

二叉搜索树又称为二叉排序树,它或者是一棵空树,或者具有如下性质的二叉树:

(1)若它的左子树不为空,则左子树上的所有节点值都小于根节点的值。

(2)若它的右子树不为空,则右子树上的所有节点值都大于根节点的值。

(3)它的左右子树也为二叉搜索树。

画图举例关于二叉搜索树:


2. 二叉搜索树前期准备工作

二叉搜索树的特点:左子树值小于根节点值,根节点值小于右子树值。

2.1 头文件search_tree.h

二叉搜索树是以链表的形式组织起来,二叉搜索树节点的结构体类型包括:节点值,节点的左子树的指向、节点的右子树的指向。

//二叉搜索树
#pragma once
//用于测试打印函数名
#define HEADER printf("===========%s=========\n",__FUNCTION__);
//便于代码的修改,重定义二叉搜索树节点的元素类型
typedef char SearchNodeType;
//定义二叉搜索树的节点的结构体类型
typedef struct SearchNode
{
    SearchNodeType data;
    struct SearchNode* lchild;
    struct SearchNode* rchild;
}SearchNode;
//函数声明                                                                                                               
void SearchTreeInit(SearchNode** proot);
void SearchTreeDestroy(SearchNode** proot);
void DestroySearchNode(SearchNode* root);

2.2 初始化

初始化二叉搜索树,即将二叉搜索树初始化为空树,故将指向二叉搜索树的指针置为NULL。

//1.初始化                                                                                                               
//思路:初始化二叉搜索树即二叉搜索树为空树,故将其根节点置为NULL即可
void SearchTreeInit(SearchNode** proot)
{
    //非法输入
    if(proot==NULL)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值