C语言如何实现BST二叉排序树
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍了C语言如何实现BST二叉排序树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下BST-二叉排序树的几个基本
千家信息网最后更新 2025年11月13日C语言如何实现BST二叉排序树
这篇文章主要介绍了C语言如何实现BST二叉排序树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体内容如下
BST-二叉排序树的几个基本操作。
头文件声明与函数定义
#include#include typedef int ElemType;/*** 定义节点*/typedef struct BSTNode{ ElemType data;//数据域 struct BSTNode *lchild,//左孩子 *rchild;//右孩子}BSTNode;/*** 插入节点*/int BST_InsertNode(BSTNode** bstNode,ElemType e);/*** 创建BST树*/void BST_Create(BSTNode** bstTree,ElemType* dataSet,int n);/** * 查找BST树节点 */BSTNode* BST_SearchNode(BSTNode** bstNode,ElemType e);/** * 遍历BST树节点 */void BST_PrintNodes(BSTNode* bstNode);
函数编写
#include "BSTree.h"/*** 插入节点*/int BST_InsertNode(BSTNode** bstNode,ElemType e){ //如果BST树为空,直接创建根节点 if (*bstNode==NULL) { *bstNode=(BSTNode*)malloc(sizeof(BSTNode)); (*bstNode)->data=e; (*bstNode)->lchild=NULL; (*bstNode)->rchild=NULL; return 1; } //如果BST树不为空,则比较插入值与根节点值的大小关系 if ((*bstNode)->data==e) return 0;//关键值相同,则插入失败 else if ((*bstNode)->data>e) return BST_InsertNode(&(*bstNode)->lchild,e);//大于插入值,将其作为左子树节点 else if ((*bstNode)->datarchild,e);//小于插入值,将其作为右子树节点}/*** 创建BST树*/void BST_Create(BSTNode** bstTree,ElemType* dataSet,int n){ int i=0; *bstTree=NULL;//BST树初始化为空 while (idata==e)//验证是否为根节点 return *bstNode; else if ((*bstNode)->data>e) { return BST_SearchNode(&(*bstNode)->lchild,e);//如果小于根节点的值,查找左子树 }else { return BST_SearchNode(&(*bstNode)->rchild,e);//如果大于根节点的值,查找右子树 }}/** * 遍历BST树节点 */void BST_PrintNodes(BSTNode* bstNode){ if (bstNode==NULL)//根节点判空 { return; } //打印根节点的值 printf("%d\t",(bstNode)->data); //从根节点开始遍历 if (bstNode->lchild!=NULL) BST_PrintNodes((bstNode)->lchild);//遍历左子树 if (bstNode->rchild!=NULL) BST_PrintNodes(bstNode->rchild);//遍历右子树} 测试
#include "BSTree.h"int main(int argc,char** argv){ int i; ElemType arr[]={45,24,53,45,12,24,68,25,36,96,100,25,64,78};//只有4个元素,因为关键字重复的元素不能被插入 BSTNode* bstNode=NULL; BSTNode* bstTemp=NULL; //创建BST树 BST_Create(&bstNode,arr,sizeof(arr)/sizeof(ElemType)); printf("%d\t%d\n",bstNode,bstNode->data); printf("%d\t%d\n",bstNode,bstNode->lchild->data); //查找结点 bstTemp=BST_SearchNode(&bstNode,53); printf("the aimed node is %d,\n",bstNode->data); //遍历BST树的所有节点 BST_PrintNodes(bstNode); printf("\n");}贴上测试结果如下,【插入和遍历的节点数量不一致是因为-如果BST树中的节点关键值相同,就终止插入操作】
感谢你能够认真阅读完这篇文章,希望小编分享的"C语言如何实现BST二叉排序树"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
节点
子树
篇文章
排序
关键
语言
相同
元素
函数
孩子
测试
一致
价值
关键字
兴趣
内容
只有
同时
基本操作
大小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
开县软件开发
数据库中确定主键
电脑网络技术
查询数据库有哪些资源被占用
对网络安全进行实例分析
服务器必备经验池
思安网络技术有限公司
手机怎么拿到服务器权限
hcl网络安全行业
设备测试软件开发 c
入门级服务器配置
kv数据库 查询
创建数据库联合主键
服务器cpu为什么功耗高
网络安全管理课程教学大纲
数据库的查询与筛选教案
值得买的服务器cpu
方舟生存进化服务器英文
天宏小助理互联网科技(广州)
优秀软件开发人
数据库技术与应用结业考试
厦门三和网络技术有限公司
内网网络安全监测
湖北利用网络技术助力今年春耕
嵌入式软件和移动软件开发
服务器dns被攻击
宝山区网络技术服务供应商
工业网络技术课件
挑选计算机网络技术销售公司
什么是网络安全特点