当前位置:网站首页>Sort binary tree code
Sort binary tree code
2022-08-10 06:35:00 【The milk is still pure】
#include// #include#include#includetypedef int DataType;typedef struct BST_node{DataType data;struct BST_node *lchild,*rchild;}BST_T;BST_T* Search_BST(BST_T** root,DataType key){BST_T *p =*root;while(p){if(p->data==key) return p;p=(key < p->data)?p->lchild:p->rchild;}return NULL;}void Insert_BST(BST_T**T,DataType data){BST_T *p_bst =(BST_T*)malloc(sizeof(BST_T));if(!p_bst) return;p_bst->data =data;p_bst->lchild=p_bst->rchild=NULL;//empty treeif((*T)==NULL){*T = p_bst;return;}//Whether it exists, if it already exists, return it, do not insertif (Search_BST(T, data) != NULL) return;//insertBST_T* tnode=NULL; BST_T *troot=(*T);while(troot){tnode = troot;troot =(datadata)? troot->lchild:troot->rchild;}if(data < tnode->data)tnode->lchild =p_bst;elsetnode->rchild =p_bst;}void CreateBST(BST_T** T,int a[],int n){int i;for(i=0;ilchild);//cout << T->data << " ";printf("%d\t",T->data);MidOrderTraverse(T->rchild);}}void PostOrderTraverse(BST_T* T){if (T){PostOrderTraverse(T->lchild);PostOrderTraverse(T->rchild);printf("%d\t",T->data);}}void PreOrderTraverse(BST_T* T){if (T){printf("%d\t",T->data);PreOrderTraverse(T->lchild);PreOrderTraverse(T->rchild);}}void DeleteBSTNode(BST_T** root,DataType data){BST_T *p = *root;BST_T *parent =NULL;BST_T *s =NULL;if (!(*root)) return;if(p->data == data){// delete the leaf nodeif(p->lchild==NULL && p->rchild==NULL)*root =NULL;// only one child nodeelse if(!p->rchild&&p->lchild)*root =p->lchild;else if (!p->lchild&&p->rchild)*root =p->rchild; //To exit the recursion//The left subtree has both the right subtreeelse{s = p->rchild;//delete the node of the penultimate layerif(!s->lchild)s->lchild =p->lchild;//Delete the node from the penultimate layer upelse{while(s->lchild){parent = s;s= s->lchild;}parent->lchild =s->rchild;s->lchild =p->lchild;s->rchild = p->rchild;}(*root) = s;}free(p);}else if(data > p->data)DeleteBSTNode(&(p->rchild),data);else if(data < p->data)DeleteBSTNode(&(p->lchild),data);}int main(){int arr[] = { 17,12,19,10,15,18,25,8,11,13,16,22};BST_T *root =NULL;CreateBST(&root,arr,12);//printf("\nCreate BST: ");// printf("\nMid order traverse: ");// MidOrderTraverse(root);printf("\npre order traverse: ");PreOrderTraverse(root);// printf("\npost order traverse: ");// PostOrderTraverse(root);//find a nodeBST_T *result = Search_BST(&root, 12);printf("Search result: %d\n",result->data);//delete node 12 in the binary sorted treeDeleteBSTNode(&root, 8);printf("\npre order traverse: ");PreOrderTraverse(root);// printf("\npost order traverse: ");// PostOrderTraverse(root);// printf("\n");} 边栏推荐
猜你喜欢

npm搭建私服,上传下载包

MySQL 免安装版/解压版的安装与配置(Win & Unix & Linux)

About MongoDb query Decimal128 to BigDecimal problem

数据库学习之数据类型

直接跳转与间接跳转

MySQL's InnoDB engine (6)

Tencent Cloud Song Xiang: Kubernetes cluster utilization improvement practice

第12章 数据库其它调优策略【2.索引及调优篇】【MySQL高级】

C language file operation

高质量WordPress下载站模板5play主题
随机推荐
All articles summary directory
什么是MQTT网关?与传统DTU有哪些区别?
OpenGL学习笔记(LearnOpenGL)-第六部分 变换
高级测试:如何使用Flink对Strom任务的逻辑功能进行复现测试?
Hypervisor, KVM, QEMU总结
Qt中输入框在Win10上“Win+/“快捷键的一个Bug
如何正确理解线程机制中常见的I/O模型,各自主要用来解决什么问题?
Text-to-Image最新论文、代码汇总
I would like to ask you guys, when FLink SQL reads the source, specify the time field of the watermark. If the specified field is in the grid
Unity瓦片地图取消部分刚体效果
Unity扩展编辑器EditorWindow 小玩意(二)
Ladies and gentlemen, oracle11g, cdc2.2, flink1.13.6, single-table incremental synchronization.Without adding data
Excuse me.Oracle CDC connector supports LogMiner and XStream API two ways to capture
语法基础(判断语句)
直接跳转与间接跳转
High quality WordPress download station 5 play theme template
第12章 数据库其它调优策略【2.索引及调优篇】【MySQL高级】
Chapter 12 Other Database Tuning Strategies [2. Index and Tuning] [MySQL Advanced]
裸辞—躺平—刷题—大厂(Android面试的几大技巧)
2022 Henan Mengxin League No. 5: University of Information Engineering J-AC Automata