【数据结构基础】二叉搜索(排序)树的基本操作
来源:互联网 发布:淘宝有卖正品的吗 编辑:程序博客网 时间:2024/06/05 09:14
#include<stdio.h>#include<stdlib.h>typedef struct TreeNode{ int data; struct TreeNode *lchild,*rchild;}Tree,*BTree;void Build_Tree(FILE *pfin,BTree *T){ int num; fscanf(pfin,"%d",&num); if(num==-1){ *T=NULL; } else{ *T=(BTree)malloc(sizeof(Tree)); (*T)->data=num; Build_Tree(pfin,&(*T)->lchild); Build_Tree(pfin,&(*T)->rchild); } } void Pre_Traversal(FILE *pfout,BTree T){ if(T!=NULL){ fprintf(pfout,"%d ",T->data); Pre_Traversal(pfout,T->lchild); Pre_Traversal(pfout,T->rchild); }}/**------------递归实现 查找 插入 删除------------- **/BTree Search(BTree T,int x){ if(!T){ return NULL; }else{ if(x<T->data){ T=Search(T->lchild,x); }else{ if(x>T->data){ T=Search(T->rchild,x); }else{ return T; } } }}void Insert(BTree *T,int in){ if(!(*T)){ *T=(BTree)malloc(sizeof(Tree)); (*T)->data=in; (*T)->lchild=(*T)->rchild=NULL; return; } if(in<(*T)->data){ Insert(&(*T)->lchild,in); }else{ Insert(&(*T)->rchild,in); }}//找二叉搜索树中的最大值 BTree FindMax(BTree T,BTree *M){ if(!T){ return *M; }else{ *M=T; T=FindMax(T->rchild,M); }} int Delete(BTree *T,int out){ BTree f,p,q,s; p=*T; f=NULL; while(p && p->data!=out){ f=p; if(p->data>out){ p=p->lchild; }else{ p=p->rchild; } } if(p==NULL){ return (0); } if(p->lchild==NULL){ if(f==NULL){ *T=p->rchild; }else{ if(f->lchild==p){ f->lchild=p->rchild; }else{ f->rchild=p->rchild; } } free(p); } else{ q=p; s=p->lchild; while(s->rchild){ q=s; s=s->rchild; } if(q==p){ q->lchild=s->lchild; }else{ q->rchild=s->lchild; } p->data=s->data; free(s); return (1); }}int main(void){ BTree T,s; BTree M=NULL; int x,in,out;//查找,插入,删除的数 FILE *pfin,*pfout; pfin=fopen("datain.txt","r"); pfout=fopen("dataout.txt","w"); Build_Tree(pfin,&T); // M=FindMax(T,&M);// printf("%d",M->data);// Pre_Traversal(pfout,T);// scanf("%d",&x);// s=Search(T,x);// scanf("%d",&in);// Insert(&T,in);// Pre_Traversal(pfout,T); scanf("%d",&out); Delete(&T,out); Pre_Traversal(pfout,T); return 0;}
阅读全文
0 0
- 【数据结构基础】二叉搜索(排序)树的基本操作
- 数据结构——排序/搜索二叉树(非递归)的基本操作实现
- 数据结构——排序/搜索二叉树(递归)的基本操作实现
- 数据结构基础5.2:二叉搜索树(BST)的基本操作(插入、查找、删除)
- 数据结构:二叉搜索树(BST)的基本操作
- 【数据结构基础】二叉排序(搜索)树
- 数据结构 二叉搜索树的相关操作
- 【数据结构】搜索二叉树的相关操作
- 【二叉搜索树】二叉搜索树的基本操作
- 二叉搜索树(二叉排序数)的基本操作实现
- 二叉搜索树(BST)的基本操作
- 二叉搜索树的一些基本操作
- 二叉搜索树的基本操作
- c++搜索二叉树的基本操作
- 二叉搜索树的一些基本操作
- 二叉搜索树的基本操作
- 搜索二叉树的基本操作
- 二叉搜索树的基本操作
- 198. House Robber
- 7.3Basic and visual basic
- Python抓取妹子图网站全部图片
- 【学习笔记】python的基础语法
- 利用继承和多态扩充程序功能
- 【数据结构基础】二叉搜索(排序)树的基本操作
- Linux-rpm命令管理介绍
- 微信联系人列表点击侧边栏首字母定位到相应联系人列表的实现方法
- Kotlin汇总1
- 串并转换verilog程序
- USACO-Section 1.3 Barn Repair[...]
- 转载“克鲁斯卡尔算法的详解”
- 栈
- 现在看到这里