二叉树排序算法数据结构c语言实现,用于建立排序的二叉树查询查询删除操作的实现代码(C语言)“数据结构和算法”(人)...

这篇博客详细介绍了二叉排序树(BST)的基本概念,并提供了非递归和递归两种搜索实现方式。此外,还阐述了BST的插入操作,通过示例展示了如何在树中插入新的节点。最后,讨论了删除操作,包括找到要删除节点及其替换策略。

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

6c1af9a6e9543124920401008dae6925.png

//定义数据结构

typedef int KeyData; //假设的关键字类型

typedef struct Node //节点

{

KeyData密钥;

struct Node * Lchild,* Rchild;

} BSTNode,* BSTree;

// 1.基于二叉树的排序搜索的非递归实现(也可以使用递归函数解决)

BSTree SearchBST(BSTree bst,键类型K)

{

BSTree q;

q = bst;

同时(q)

{

如果(q-> KeyK)

返回q;

否则(kKey)q = q-> Lchild;

否则q = q->里尔德(Rchild);

2227645f325bfe90d96e3d957a790e7f.png

}

返回NULL;

}

//基于二叉树的排序搜索的递归实现

BSTree SearchBST(BSTree bst,键类型K)

{

如果(!bst)返回NULL;

否则(Kbst-> Key)返回bst;

否则,如果(KKey)返回SearchBST(bst-> Lchild,K);

elsereturn SearchBST(bst-> Rchild,K);

}

// 2.二进制排序树的插入操作

void InsertBST(BSTree * bst,键类型K)

{

BiTree s;

如果(* bst == NULL)

{

s =(BSTree)malloc(sizeof(BSTNode));

d37db08a03ba1a98d2c67b8f0653a2cf.png

s->键= K;

s-> Lchild = NULL;

s-> Rchild = NULL;

* bst = s;

}

否则if((K 键)InsertBST(&(((* bst)-> Lchild),K);

否则(if(K>(* bst)->键)InsertBST(&(((* bst)-> Rchild)二叉排序树的建立c,K);

}

//创建二进制排序树

无效CreateBST(BSTree * bst)

{

KeyType键;

* bst = NULL;

scanf(“%d”和键);

同时(键!= ENDKEY)

{

InsertBST(bst,密钥);

scanf(“%d”,&Key);

50940b241314e8ce4a34b328876801e3.png

}

}

//删除二进制排序树的操作

BSTree * DelBST(BSTree bst,键类型K)

{

BSTree * p,* f二叉排序树的建立c,* s,* q;

p = bst;

f = NULL;

while§

{

如果(p-> KeyK)中断;

f = p;

否则(kKey)p = p-> Lchild;

else p = p-> Rchild;

}

如果(pNULL)返回bst;

如果(p-> LchildNULL)

{

30816a350cea5ca3e4efa9fcd18a8de4.png

如果(fNULL)bst = p-> rchild;

否则(f-> lchild == p)f-> Lchild = p-> Rchild;

else f-> Rchild = p-> Rchild;

免费§;

}

其他

{

q = p;

s = p-> Lchild;

同时(s-> rchild)

{

q = s;

s = s-> Rchild;

}

如果(q == p)q-> Lchild = s-> Lchild;

elseq-> Rchild = s-> Lchid;

p->键= s->键;

免费(s);

}

返回bst;

}

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-147257-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值