《数据结构与算法分析》--二叉查找树
来源:互联网 发布:淘宝课程培训视频下载 编辑:程序博客网 时间:2024/05/02 20:50
二叉查找树的结构:
struct TreeNode{ ElementType element; TreeNode* left; TreeNode* right;};typedef TreeNode* SearchTree;typedef TreeNode* position;
二叉查找树的操作声明:
//清空树SearchTree MakeEmpty(SearchTree t){ if(t!=NULL) { MakeEmpty(t->left); MakeEmpty(t->right); free(t); } return NULL; }//插入操作position Insert(ElementType x,SearchTree t){ if(t==NULL) { t=new TreeNode; t->element=x; t->left=t->right=NULL; } else { if(x < t->element) { t->left=Insert(x,t->left);//左子树指向左儿子 } if(x > t->element) { t->right=Insert(x,t->right);//右子树指向右儿子 } } return t;//返回的是根节点的地址}//删除操作position Delete(ElementType x,SearchTree t){ position tmp; if(t==NULL) return NULL; else if(x < t->element) { t->left=Delete(x,t->left); } else if(x > t->element) { t->right=Delete(x,t->right); } else if(t->left && t->right) { temp=FindMin(t->left); t->element=temp->element; t->right=Delete(t->element,t->right); } else { temp=t; if(t->left==NULL) t=t->right; if(t->right==NULL) t=t->left; free(temp); } return t;}//查找操作position Find(ElementType x,SearchTree t){ if(t==NULL) return NULL; else if(x < t->element) { return Find(x,t->left); } else if(x > t->element) { return Find(x,t->right); } else return t;}//查找最大值操作position FindMax(SearchTree t){ if(t==NULL) return NULL; else if(t->right!=NULL) return FindMax(t->right); else return t;}//查找最小值操作position FindMin(SearchTree t){ if(t==NULL) return NULL; else if(t->left!=NULL) return FindMin(t->left); else return t;}
二叉查找树相对来说比较简单,操作较少。在上述操作中,最难的是Delete操作,Delete操作一定要分为四种情况。
0 0
- 《数据结构与算法分析》--二叉查找树
- 数据结构与算法分析-树、二叉树、二叉查找树
- 【数据结构与算法分析】二叉查找树与AVL树
- 数据结构与算法分析-二叉查找树的实现
- 数据结构与算法分析 c++11 查找二叉树 BinarySearchTree
- 数据结构与算法(二叉查找树)
- 数据结构与算法06:二叉查找树
- <数据结构与算法>之二叉查找树
- 数据结构与算法_二叉查找树
- 【算法】数据结构与算法分析学习笔记——各类二叉查找树的吐血整理
- 数据结构与算法分析--二叉排序树(二叉查找树,二叉搜索树)的查找、插入和删除操作
- 数据结构与算法JavaScript - 二叉树和二叉查找树
- (数据结构与算法分析 五)------二叉查找树的实现( Java语言描述)
- 二叉查找树 - C语言实现(摘自数据结构与算法分析 C语言描述)
- 二叉查找树 - C语言实现(摘自数据结构与算法分析 C语言描述)
- 《数据结构与算法分析》动态规划--矩阵乘法最优顺序、最优二叉查找树详解
- [数据结构与算法分析] 二叉查找树的基础概念,插入以及删除
- 数据结构与算法分析(三) —— 二叉查找树的实现
- ActiveMQ启动报端口占用解决方法
- codeforce 6C - Alice, Bob and Chocolate
- JAVA学习——数组
- 全排列剖析:求n个数第k个排序----康托展开
- 那就学一点http
- 《数据结构与算法分析》--二叉查找树
- C++实现LZ77压缩算法
- Windows Error Code
- Android Data Bingding初体验
- 启动mysql出现服务无法启动,服务没有报告任何错误
- Python 爬虫教程 1 - 前言
- CCF 2014 3-1 相反数
- 蓝桥杯-入门训练 序列求和
- 博为峰JavaEE技术文章 ——MyBatis 简介(2)