C语言如何实现BST二叉排序树
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章主要介绍了C语言如何实现BST二叉排序树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下BST-二叉排序树的几个基本
千家信息网最后更新 2024年11月30日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 (i data==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安全错误
数据库的锁怎样保障安全
软件开发 广度深度
广州等你网络技术有限公司
ubuntu20.04 服务器
无锡创新网网络安全
网络安全法 违法行为名称
苏州企业软件开发定做
java数据库使用变量
南京橙果网络技术有限公司招聘
网站怎么与数据库相连接
旅游软件开发商业计划书
数据库逻辑设计例
互联网网络安全与信息化
锐捷酒店网络安全管理
数据库应用技术电子书
走之底网络技术有限公司
宝山区营销软件开发销售电话
南京市网络安全宣传周开幕
保密及网络安全培训会
漯河微商软件开发
软件开发资本化包括
对峙2手游哪个服务器人多
网络技术运用在铁道线上
怎么免费获得永久服务器
网络安全防病毒产品
炉石传说数据库手机版下载
tp5获取数据库新增id
胶州ios软件开发公司有哪些
山西常规软件开发收购价格
即时通信服务器
互联网征信与金融科技