题目1009:二叉搜索树
来源:互联网 发布:java split分割字符串 编辑:程序博客网 时间:2024/06/05 22:45
- 题目描述:
- 判断两序列是否为同一二叉搜索树序列
- 输入:
- 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
- 输出:
如果序列相同则输出YES,否则输出NO
- 样例输入:
25674325432675763420
- 样例输出:
YESNO
思路很简单,重建树判断是否一致
#include<iostream>#include<string>using namespace std; typedef struct node{ node *left; node *right; char c;}*tree; void creat(tree *p,string &s){ int n=s.length(); for(int i=0;i<n;++i) { tree temp=*p; tree pre=NULL; tree te=new node(); te->c=s[i]; te->left=NULL; te->right=NULL; while(temp) { pre=temp; if(temp->c>s[i]) temp=temp->left; else temp=temp->right; } if(pre==NULL) *p=te; else if(pre->c>s[i]) pre->left=te; else pre->right=te; }} void pre(tree p,string &s){ if(p) { s+=p->c; pre(p->left,s); pre(p->right,s); }} int main(){ tree t=NULL; string s1,s2; int n; while(cin>>n,n) { cin>>s1; t=NULL; creat(&t,s1); s1=""; pre(t,s1); while(n--) { cin>>s2; t=NULL; creat(&t,s2); s2=""; pre(t,s2); if(s1==s2) cout<<"YES\n"; else cout<<"NO\n"; //s2.clear(); } //s1.clear(); }}
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 题目1009:二叉搜索树
- 九度题目1009:二叉搜索树
- 九度题目1009:二叉搜索树
- Jobdu 题目1009:二叉搜索树
- 单例模式
- 2013年9月24日星期二
- linux检查端口 bash python
- 单调队列-Hdu-4122-Alice's mooncake shop
- Java基础<十三>_GUI
- 题目1009:二叉搜索树
- 二叉树的非递归遍历
- 【Linux基础】根文件系统制作
- android SQLite数据库使用总结之(二)创建自己的数据库
- Error setting expression 'XXX' with value [Ljava.lang.String;@...
- C#网络编程
- Keil C51里关于堆栈指针的处理
- 在java程序中使用jQuery抓取网页的新方法(java调用js解析引擎)
- 阿里2014校招笔试题(南大)——利用thread和sleep生成字符串的伪随机序列