二叉搜索树的应用
来源:互联网 发布:数据库面试问答题 编辑:程序博客网 时间:2024/06/10 16:24
先给你第一个序列比如说是3,1,4,2,这四个数按照顺序建立一个二叉搜索树,然后再给你n个序列,问你这n个序列如果有序列能建立起来的二叉搜索树是和第一个序列一样的那就输出YES,否则就是NO,比如说3,1,4,2建立起来的搜索树是而3,2,4,1则是这就要输出NO。
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;typedef struct tree{ int v; int flag; struct tree *Left,*Right;}*Tree;Tree NewNode(int V){ Tree T=(Tree)malloc(sizeof(struct tree)); T->v=V; T->Left=T->Right=NULL; T->flag=0;//没被访问过的 return T;}Tree Insert(Tree T,int V){ if(!T) T=NewNode(V);//在空的搜索树上建立一个新结点 else { if(V>T->v) T->Right=Insert(T->Right,V);//比根节点大插在右边 else T->Left=Insert(T->Left,V);//比根节点小插在左边 } return T;}Tree MakeTree(int N)//建搜索树{ Tree T; int i,V; scanf("%d",&V); T=NewNode(V);//创建根结点 for(i=1;i<N;i++) { scanf("%d",&V); T=Insert(T,V);//读入后面的数 } return T;}int check(Tree T,int V){ if(T->flag) { if(V<T->v) return check(T->Left,V);//看是否比结点小,如果是往左走 else if(V>T->v)//看是否比结点小,如果是往右走 return check(T->Right,V); else return 0;//这表示有两个一样的数了 } else { if(V==T->v) { T->flag=1; return 1; } else return 0; }}int Judge(Tree T,int N){ int i,V,flag=0; scanf("%d",&V); if(V!=T->v) flag=1;//根结点不一样整个序列肯定不一样 else T->flag=1; for(i=1;i<N;i++) { scanf("%d",&V); if((!flag)&&(!check(T,V))) flag=1; } if(flag==1) return 0; else return 1;}void ResetT(Tree T)//清除T中各个结点的标记{ if(T->Left) ResetT(T->Left); if(T->Right) ResetT(T->Right); T->flag=0;}void FreeTree(Tree T)//释放T的空间{ if(T->Left) FreeTree(T->Left); if(T->Right) FreeTree(T->Right); free(T);}int main(){ int N,L,i; Tree T; scanf("%d",&N); while(N) { scanf("%d",&L); T=MakeTree(N);//建立一棵有n个结点的树 for(i=0;i<L;i++) { if(Judge(T,N)) printf("Yes\n"); else printf("No\n"); ResetT(T);//清除T中的标记 } FreeTree(T); scanf("%d",&N); } return 0;}
0 0
- 搜索二叉树的应用
- 二叉搜索树的应用
- 二叉搜索树应用分析
- 二叉搜索树的后序遍历序列(二叉搜索树的应用)
- 二叉树应用-二叉搜索树类模板的实现(数据结构基础 第6周)
- 二叉树遍历的应用(路径和问题,判断是否是二叉搜索树,判断是否是二叉平衡树)
- 二叉搜索树的插入,搜索,删除
- 二叉搜索树的实现
- 二叉搜索树的建立
- 搜索二叉树的初始化
- 二叉搜索树的插入
- 二叉搜索树的实现
- 二叉搜索树的实现
- 二叉搜索树的实现
- 搜索二叉树的操作
- 二叉搜索树的遍历
- 搜索二叉树的实现
- 二叉搜索树的实现
- 2017起点
- 部署图
- 每天一个 Linux 命令(19):find 命令概览
- ORACLE sqlplus设置行数和宽度
- HTML基础:文本的样式标签(6)
- 二叉搜索树的应用
- http协议之response案例三:【content-type】--服务器发送给浏览器的数据类型和数据编码格式
- 约瑟夫问题
- 理解OAuth 2.0
- 迭代方法
- 三层登录实现
- 回味2016年,拥抱2017年
- 左神的书——《程序员代码面试指南》之设计一个有getmin功能的栈 c++实现
- oracle 开启和关闭archlog