HDU 3791 二叉搜索树
2013-08-01 01:02
253 查看
二叉搜索树
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2074 Accepted Submission(s): 925
[align=left]Problem Description[/align]
判断两序列是否为同一二叉搜索树序列
[align=left]Input[/align]
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
[align=left]Output[/align]
如果序列相同则输出YES,否则输出NO
[align=left]Sample Input[/align]
2 567432 543267 576342 0
[align=left]Sample Output[/align]
YES NO
建立二叉搜索树。比较前序遍历,一样则为同一棵二叉搜索树....
//二叉搜索树 #include <iostream> using namespace std; struct tree { int data; tree *left; tree *right; tree() { left=NULL; right=NULL; }//结构体构造函数 }; void insert(tree *&root,int data) { if(root==NULL) { root=new tree; root->data=data; return ; } if(data>root->data) insert(root->right,data); else insert(root->left,data); }//插入数据构建二叉查找树 void bfs(tree *root) { if(root==NULL) return; cout<<root->data; bfs(root->left); bfs(root->right); }//前序遍历 void cmp(tree *t1,tree *t2,bool &flag) { if(flag==false) return; if(t1==NULL&&t2==NULL) return; if(t1==NULL||t2==NULL||t1->data!=t2->data) { flag=false; return; } cmp(t1->left,t2->left,flag); cmp(t1->right,t2->right,flag); }//前序遍历比较两个二叉查找树是否相等 void del(tree *p) { if(p->left) del(p->left); if(p->right) del(p->right); delete p; }//删除节点释放空间 int main() { int n; char str[11]; while(cin>>n) { cin>>str; tree *root=new tree; root->data=str[0]-'0'; for(int i=1;str[i];i++) insert(root,str[i]-'0'); while(n--) { cin>>str; tree *p=new tree; p->data=str[0]-'0'; for(int i=1;str[i];i++) insert(p,str[i]-'0'); bool flag=true; cmp(root,p,flag); flag?cout<<"YES":cout<<"NO"; cout<<endl; del(p); } del(root); } return 0; }
相关文章推荐
- hdu 3791 链表实现二叉搜索树
- hdu 3791 二叉搜索树
- 二叉搜索树 hdu 3791
- hdu 3791 二叉搜索树
- hdu 3791:二叉搜索树(数据结构,二叉搜索树 BST)
- HDU-3791-判断一棵树是不是二叉搜索树
- HDU 3791 二叉搜索树 题解
- HDU 3791 二叉搜索树
- HDU - 3791 二叉搜索树 (构建二叉搜索树)
- hdu 3791 二叉搜索树
- HDU 3791 二叉搜索树
- hdu 3791 二叉搜索树
- HDU-3791二叉搜索树
- hdu 3791 二叉搜索树
- HDU 3791 比较两棵二叉搜索树是否相同(建树,比较)
- [ACM] hdu 3791 二叉搜索树
- 二叉搜索树 HDU - 3791
- HDU 3791 二叉搜索树 (基础题)
- HDU 3791 二叉搜索树
- HDU_3791 二叉搜索树