二叉查找树C语言实现
来源:互联网 发布:python api 中文 编辑:程序博客网 时间:2024/05/17 02:25
二叉查找树C语言实现
1. 二叉查找树的定义:
左子树不为空的时候,左子树的结点值小于根节点,右子树不为空时,右子树的结点值大于根节点,左右子树分别为二叉查找树
2. 二叉查找树的最左边的结点即为最小值,要查找最小值,只需遍历左子树的结点直到为空为止,同理,最右边的结点结尾最大值,要查找最大值,只需遍历右子树的结点直到为空为止。二叉查找树的插入查找和删除都是通过递归的方式来实现的,删除一个结点的时候,先找到这个结点S,然后并不是真正的删除这个结点S,而是在其右子树找到后继结点,将后继结点的值付给S,然后删除这个后继结点即可。
3. 二叉查找树的C实现:
# include <iostream># include <cstdlib>using namespace std;struct TreeNode{int val;TreeNode *left;TreeNode *right;TreeNode(int x):val(x),left(NULL),right(NULL){}};TreeNode *insert(TreeNode *root,int val) //插入元素{if(root==NULL){root=new TreeNode(val);return root;}if(val<root->val)root->left=insert(root->left,val);if(val>root->val)root->right=insert(root->right,val);return root;}TreeNode *findmin(TreeNode *root){if(root==NULL)return NULL;if(root->left==NULL&&root->right==NULL)return root;if(root->left)return findmin(root->left);}bool find(TreeNode *root,int val) //查找元素,若存在返回1,不存在返回0{if(root==NULL)return false;if(root->val==val)return true;if(val<root->val)return find(root->left,val);elsereturn find(root->right,val);return false;}TreeNode *delnum(TreeNode *root,int val){if(root==NULL)return NULL;if(val>root->val)root->right=delnum(root->right,val);else if(val<root->val)root->left=delnum(root->left,val);else{if(root->left&&root->right) //待删除结点有两个孩子的情形{TreeNode *tmp=findmin(root->right);root->val=tmp->val;root->right=delnum(root->right,tmp->val);}else //待删除结点只有一个或者没有孩子{if(root->left==NULL)root=root->right;else if(root->right==NULL)root=root->left;}}return root;}int main() //测试代码{TreeNode *root=NULL;root=insert(root,3);root=insert(root,2);root=insert(root,4);root=insert(root,1);cout<<find(root,2)<<endl;root=delnum(root,2); cout<<find(root,2)<<endl;system("pause");return 0;}
0 0
- 二叉查找树(c语言实现)
- 二叉查找树C语言实现
- 二叉查找树c语言实现
- 二叉查找树C语言实现
- C语言实现二叉查找树
- 二叉查找树(C语言实现 )
- 二叉查找树的C语言实现
- 实现二叉查找树 -- C语言
- C语言实现二叉查找树
- 二叉查找树的C语言实现
- 数据结构:二叉查找树(C语言实现)
- c语言实现二叉查找树
- 二叉查找树实现(C语言版本)
- AVL平衡二叉查找树实现(C语言版本)
- 二叉查找树(BST)及其C语言实现
- 基于c语言实现的二叉查找树
- 二叉查找树的C语言实现(一)
- 二叉查找树的C语言实现(二)
- 黑马程序员-基础加强1
- 深入浅出Nginx-负载均衡与反向代理实践之一
- 博客学习一
- HDU2222 Keywords Search
- 自动化框架的比较
- 二叉查找树C语言实现
- TCP长连接与短连接的区别
- NSDate
- HM中参考图像列表的设置
- Fastjson快速入门
- 前端开发面试题集锦(二)
- 秦绪文:月赚四万水果店微信倾情打造
- HEVC参考图像列表(二)之广义B帧技术GPB
- git常用命令--自用--不断更新