hdu3791(二叉搜索树)
http://acm.hdu.edu.cn/showproblem.php?pid=3791
思路:建好二叉搜索树后,用二叉树的历遍去判断就好
#include<iostream> #include<cstring> using namespace std; typedef struct tree { tree *r,*l; int num; }tree; tree *root; int a[30],b[30],count=0; tree *creat(int x) { tree *t=(tree *)malloc(sizeof(tree)); t->r=0; t->l=0; t->num=x; return t; } tree *inster(tree *s,int x) { tree *t; if(s==NULL) { t=creat(x); s=t; } else { if(x<=s->num) s->l=inster(s->l,x); else s->r=inster(s->r,x); } return s; } void libian(tree *root) { if(root!=NULL) { b[count++]=root->num; libian(root->l); libian(root->r); } } int main() { int n; while(scanf("%d",&n)>0&&n) { count=0; root=NULL; char str[30]; scanf("%s",str); int len=strlen(str); int i,j; for(i=0;i<len;i++) { int tmp=str[i]-48; root=inster(root,tmp); } libian(root); for(i=0;i<len;i++) a[i]=b[i]; while(n--) { count=i=0; scanf("%s",str); root=NULL; for(i=0;i<len;i++) { int tmp=str[i]-48; root=inster(root,tmp); } libian(root); for(i=0;i<len;i++) if(a[i]!=b[i]) { printf("NO\n"); break; } if(i>=len) printf("YES\n"); } } return 0; }
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。