关于二叉搜索树的一些操作
来源:互联网 发布:黎明杀机n卡优化 编辑:程序博客网 时间:2024/05/22 12:29
#include "stdafx.h"#include "iostream"#include "stdlib.h"#define ElementType inttypedef struct TreeNode *tree;struct TreeNode{ElementType Date;tree Left;tree Right;};tree MakeEmpty(tree T);tree Insert(ElementType x,tree T);tree Find(ElementType x,tree T);tree FindMax(tree T);tree FindMin(tree T);tree Delete(ElementType x,tree T);tree MakeEmpty(tree T){if(T!=NULL){MakeEmpty(T->Left);MakeEmpty(T->Right);free(T);}return NULL;}tree FindMax(tree T){if(T==NULL)return NULL;else if(T->Right==NULL)return T;elsereturn FindMax(T->Right);}tree FindMin(tree T){if(T!=NULL){while(T->Left!=NULL)T=T->Left;}return T;}tree Insert(ElementType x,tree T){if(T==NULL){T=(tree)malloc(sizeof(struct TreeNode));if(T==NULL)printf("error\n");else{T->Date=x;T->Left=T->Right=NULL;}}else if(x>T->Date)T->Right=Insert (x,T->Right);//之前这里光Insert但并没有赋给T->Right,所以树根本没建立起来;else if(x<T->Date)T->Left=Insert(x,T->Left);return T;}tree Find(ElementType x,tree T){if(NULL==T)return NULL;else if(x==T->Date)return T;else if(x>T->Date)return Find(x,T->Right);else return Find(x,T->Left);}tree Delete(ElementType x,tree T){tree tmp;//T=Find(x,T);if(T==NULL)printf("error");else if(x<T->Date)T->Left=Delete(x,T->Left);else if(x>T->Date)T->Right=Delete(x,T->Right);else if(T->Left&&T->Right)//这里是当树的左右节点都存在的情况,策略是用右子树的最小数据代替要删除的点{tmp=FindMin(T->Right);T->Date=tmp->Date;T->Right=Delete(T->Date,T->Right);}else//只有一个节点或没有的情况;{ tmp=T; if(T->Left==NULL) T=T->Right; else if(T->Right==NULL) T=T->Left; free(tmp);//这里是要释放原结点}return T;}
阅读全文
0 0
- 关于二叉搜索树的一些操作
- 二叉搜索树的一些基本操作
- 二叉搜索树的一些基本操作
- 关于二叉树的一些操作
- 关于二叉树的一些操作
- 二叉搜索树的查找与删除一些基本操作
- 搜索二叉树的操作
- 二叉搜索树的操作
- 二叉搜索树的操作
- 二叉搜索树的操作
- 关于二叉树的一些操作(一)
- 【二叉搜索树】二叉搜索树的基本操作
- 二叉树的一些操作
- 二叉树的一些操作
- 二叉搜索树的一些实现
- 二叉搜索树操作
- 二叉搜索树(BST)的基本操作
- 二叉搜索树的性质与操作
- delete 和 truncate table
- xml,Excel文件的读取
- Myeclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- 进程间通信--共享内存
- python协程:yield的使用
- 关于二叉搜索树的一些操作
- java 开发环境搭建
- 网络编程InetAddress类的使用
- 02_程序员必须掌握的8大排序算法_希尔排序
- oracle 动态执行命令execute immediate
- React Native Android 虚拟机运行
- CS:APP二进制炸弹phase1
- 如何选择深度学习优化器
- 前端解决跨域问题的8种方案(最新最全)