千家信息网

C语言如何实现BST二叉排序树

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了C语言如何实现BST二叉排序树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下BST-二叉排序树的几个基本
千家信息网最后更新 2025年01月21日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安全错误 数据库的锁怎样保障安全 湖南华昊网络技术有限公司 邮储银行网络安全事故 文档软件开发销售电话 一个服务器 多个ip 浙江互联网软件开发正规平台 软件开发如何写概要设计 网络安全知识儿歌大全 长沙生财金点子软件开发公司 融创内部数据库 首届全国中学生网络安全竞赛 手机网络服务器繁忙怎么解决 铜川软件开发地址 网络安全技术与应用期刊好么 苹果与服务器建立安全连接 江西智能化软件开发销售 qb 数据库 医疗 下列哪个不属于数据库备份的方式 新希望网络安全 河南通用软件开发收购价格 双创网络安全宣传周 软件开发高校招聘信息 软件开发的三层架构 虎牙协议软件开发 华为服务器广东总经理 云服务器可以手机上网吗 太原新中大软件开发有限公司 为了提高网络安全意识的英语作文 ps4荣耀战魂服务器 长春有学计算机网络技术学校 有患者病理报告的数据库
0