BinSearchTree
来源:互联网 发布:淘宝新店上架多少宝贝 编辑:程序博客网 时间:2024/06/02 00:35
二叉排序树的删除:
http://blog.csdn.net/arcsinsin/article/details/10238505
http://www.cnblogs.com/Lvsi/archive/2011/06/13/2079280.html
# include<iostream># include<queue>using namespace std;typedefstruct BinSearchTree{int data;struct BinSearchTree *left;struct BinSearchTree *right;}btree;//二叉排序树插入void insert(btree *&root,btree *s){if(root==NULL)root=s;else if(root->data==s->data){return;}else if(root->data>s->data){insert(root->left,s);}elseinsert(root->right,s);}void creat(btree *&b){b=NULL;btree *s;while(1){int x;cin>>x;if(x<0)break;s=(btree *)malloc(sizeof(btree));s->data=x;s->left=NULL;s->right=NULL;insert(b,s);}}btree* Search(btree *root,int data){if(root==NULL)return NULL;if(root->data==data)return root;else if(root->data>data)Search(root->left,data);elseSearch(root->right,data);}void Delnode(btree *&root,int data){ btree *s=Search(root,data); if(s==NULL) return ; if(s->left!=NULL) // 有左子树 { btree *r=s->left; btree *pre=s->left; while(r->right) // 找左子树中最右边(最大)的节点 { pre=r; r=r->right; } s->data=r->data; // 用左子树中最右边的节点的值覆盖要删除的节点 if(pre!=r) // s 的左子树有右节点 { pre->right=r->left; } else// s 的左子树无 右节点 { s->left=r->left; } free(r); // 释放节点r } else // 只有右子树 { btree *p=s; s=s->right; free(p); p=NULL; }}void print(btree *root) // 层序遍历输出{queue<btree *> q1;btree *p;if(root==NULL)return ;q1.push(root);while(!q1.empty()){p=q1.front();q1.pop();cout<<p->data<<" ";if(p->left!=NULL)q1.push(p->left);if(p->right!=NULL)q1.push(p->right);}}
0 0
- BinSearchTree
- (折半查找树)BinSearchTree模板类
- 模仿STL,实现二叉搜索数,带迭代器 BinSearchTree (iterator)
- C#通过API获取接收数据窗体控件句柄,并向该句柄发送文本信息
- Ubuntu安装软件提示”需要安装不能信任的软件包”解决办法
- 遍历ftp上文件 CFtpFileFind
- Java动态代理三——模拟AOP实现
- Android Animation
- BinSearchTree
- 什么是反向代理服务器,开放的反向代理软件使用
- 森蝶放学拔草带回家 孝顺称留给爸爸炒着吃
- LoadRunner11录制脚本为空
- Android 自动更新(模拟服务器)
- Sort List
- 那女孩对我说
- Hibernate的JAVA对象的3种状态
- ImageMagick库简介