二叉搜索树
来源:互联网 发布:思科交换机各端口意思 编辑:程序博客网 时间:2024/05/23 21:22
#include <iostream>#include <vector>using namespace std;typedef struct node{ int data; struct node* lchild; struct node* rchild;} Node,*pNode;void insert_sbt(pNode &T, int data){ if(T==NULL){ T=(pNode)malloc(sizeof(Node)); T->data=data; T->lchild=T->rchild=NULL; } else if(T->data<data) insert_sbt(T->rchild, data); else insert_sbt(T->lchild, data);//这个是传的引用,所以可以保留修改。}//插入那里用传引用比较方便,这里删除就不要用传递引用了,对二叉树加一个头指针,删除操作清晰明了。void del_node(pNode T,pNode f){ pNode *temp=NULL; if(f->lchild==T) temp=&(f->lchild); else temp=&(f->rchild); if(T->lchild && T->rchild){ pNode p=T->rchild; pNode q=T; while(p->lchild){ q=p; p=p->lchild; } T->data=p->data; del_node(p, q); } else if(T->lchild){ *temp=T->lchild; delete T; } else if(T->rchild){ *temp=T->rchild; delete T; } else{ *temp=NULL; delete T; }}bool delete_sbt(pNode T, int data, pNode f){ if(T==NULL){ return false;//没找到相应的元素 } if(T->data==data){ del_node(T, f); return true; } else if(T->data>data) return delete_sbt(T->lchild, data, T); else if(T->data<data) return delete_sbt(T->rchild, data, T); return true;}void print_tree(pNode T){ if(T->lchild) print_tree(T->lchild); cout<<T->data<<" "; if(T->rchild) print_tree(T->rchild);}pNode create_search_binary_tree(vector<int> vi){ pNode T=NULL; for(auto ieh: vi){ insert_sbt(T, ieh); } return T;}int main(){ int c=20; vector<int> vi; vi={4,1,9,3,2,7,5,6}; pNode Thead=(pNode)malloc(sizeof(Node)); Thead->lchild=create_search_binary_tree(vi); print_tree(Thead->lchild); cout<<endl; vector<int> del_data={1,3,7,6}; for(auto ieh: del_data){ delete_sbt(Thead->lchild, ieh, Thead); print_tree(Thead->lchild); cout<<endl; } return 0;}
阅读全文
0 0
- 【二叉搜索数】HDU3791二叉搜索树
- 二叉树--二叉搜索树
- 【二叉树】二叉搜索树
- 二叉树- 二叉搜索树
- 【搜索树】二叉搜索树
- 二叉搜索树BSTree
- 二叉搜索树
- 二叉搜索树
- 二叉搜索树
- 最优二叉搜索树
- 二叉搜索树
- 二叉搜索树
- HDOJ3791 二叉搜索树
- 二叉查找树搜索
- 二叉搜索树
- 二叉搜索树
- BST 二叉搜索树
- 二叉搜索树
- 搭建web服务实现多个虚拟主机.基于主机/用户的访问控制
- 树莓派3串口(UART)使用问题的解决方法!!!!
- React学习(一)Hello world
- css3阴影box-shadow
- Oracle decode函数
- 二叉搜索树
- PDF编辑器怎么对PDF文件进行页面的调整
- C/C++开发者必不可少的15款编译器+IDE
- mysql中的commit()语句
- Sql server 定期备份数据,并删除某表
- 第二章 头文件、变量和基本类型(3)——字面值常量
- CSS实现垂直居中,vertical-align:middle怎么用
- QT dialog 模态
- 流程的Python 第八章:对象引用、可变性和垃圾回收