OJ_1009 二叉搜索树
来源:互联网 发布:java bigdecimal 累加 编辑:程序博客网 时间:2024/06/03 09:58
#include <iostream>using namespace std;typedef struct btree{ int data; struct btree*left,*right;}btree;btree* create(btree* t,int x){ if(t==NULL) { // t=(btree*)malloc(sizeof(btree)); t=new btree; t->data=x; t->left=t->right=NULL; } else if(x<=t->data) t->left=create(t->left,x); else if(x>t->data) t->right=create(t->right,x); return t; }bool isSame(btree* a,btree* b){ if(a==NULL&&b==NULL) return true; if(a->data==b->data) return isSame(a->left,b->left)&&isSame(a->right,b->right); return false;}void func(){ int n; while(cin>>n) { if(n==0)break; string str; cin>>str; btree* first=NULL; for(int k=0;k<str.size();k++) first=create(first,str[k]); for(int i=0;i<n;i++) { string temp; cin>>temp; btree* second=NULL; for(int j=0;j<temp.size();j++) second=create(second,temp[j]); bool flag=isSame(first,second); if(flag)cout<<"YES"<<endl; else cout<<"NO"<<endl; } }}int main(int argc, char *argv[]){//printf("Hello, world\n");func();return 0;}
简单解法:分别创建二叉线索树,递归判断两个树对应结构上的数字是否相等
- 题目描述:
- 判断两序列是否为同一二叉搜索树序列
- 输入:
- 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
- 输出:
如果序列相同则输出YES,否则输出NO
- 样例输入:
25674325432675763420
- 样例输出:
YESNO
0 0
- OJ_1009 二叉搜索树
- 【二叉搜索数】HDU3791二叉搜索树
- 二叉树--二叉搜索树
- 【二叉树】二叉搜索树
- 二叉树- 二叉搜索树
- 【搜索树】二叉搜索树
- 二叉搜索树BSTree
- 二叉搜索树
- 二叉搜索树
- 二叉搜索树
- 最优二叉搜索树
- 二叉搜索树
- 二叉搜索树
- HDOJ3791 二叉搜索树
- 二叉查找树搜索
- 二叉搜索树
- 二叉搜索树
- BST 二叉搜索树
- poj2386 深搜 连通块问题
- 利用EXCEL+ACCESS分析大数据量文件
- [树状数组]POJ 2352 Stars
- 数据结构与算法--链栈
- java学习笔记 反射reflection相关知识点小结
- OJ_1009 二叉搜索树
- 数据结构与算法——栈的作用及应用
- 杭电1800Flying to the Mars
- OJ_1010
- maven学习笔记【指定jdk】
- 读《C和指针》 I
- 微型研发团队建设
- OJ_1011 最大连续子序列
- SQL事务