1 条题解
-
0
C++ :
#include <iostream> #include <cstdio> #include <cstring> using namespace std; class tree { public: tree *f,*l,*r; int a[11]; int num; tree(tree* aa,int n) // 构造函数,利用 new 调用 { f=aa; l=NULL; r=NULL; num = n; memset(a,0,sizeof(a)); }; tree()//默认构造 { f=NULL; l=NULL; r=NULL; num = 0; memset(a,0,sizeof(a)); }; }; /* void delet(tree* te)//dfs - 深搜删除被使用过的节点 { if(te->l!=NULL ) { delet(te->l); delete(te->l); } if(te->r!=NULL ) { delet(te->r); delete(te->r); } } */ void insert(int deep,int n,int m,tree* te,int num) { if(deep == n) { if(te->l != NULL ) { te->r = new tree(te,num); } else { te->a[n+1]++; te->l = new tree(te,num); } } else if(te->a[n] >=m) { te->a[n+1]++; insert(deep+1,n,m,te->l,num); } else { insert(deep+1,n,m - te->a[n],te->r,num); } } int serch(int deep,int n,int m,tree* te) { if(deep == n-1) { if(m>2) return 0; else if(m==1) { if(te->l ==NULL) { return 0; } return te->l->num; } else { if(te->l==NULL || te->r == NULL ) return 0; return te->r->num; } } else if(te->a[n] >=m) { serch(deep+1,n,m,te->l); } else { if(te->r!=NULL ) serch(deep+1,n,m - te->a[n] ,te->r); else return 0; } } int main() { int k,n,m,num; tree* temp = new tree(); while(cin>>k>>n>>m) { if(k==1) { cin>>num; insert(1,n,m,temp,num); } else { if(n==1) { puts(m==1?"0":"no"); } else { int k = serch(1,n,m,temp); if(k==0) { puts("no"); } else { printf("%d\n",k); } } } } //delete(temp); return 0; }
- 1
信息
- ID
- 1993
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者