问题描述:满二叉树的特点;输入输出。
问题链接
03pie’s solution for [UVA-712]:
#include<cstdio>
#include<vector>
using namespace std;char get[1<<8];
char lefts[1<<8];
vector<int>order;int n;
void solve(){char tmp[10];int val;order.clear();for(int i=0;i<n;i++){scanf("%s",tmp);//读取节点信息 sscanf(tmp+1,"%d",&val);//提取出节点顺序 order.push_back(val);//记录到队列里 } scanf("%s",lefts);int k;scanf("%d",&k);while(k--){scanf("%s",get+1);int root=1;for(int i=0;i<order.size();i++){
//根据排好序的队列找到节点的位置 if(get[order[i]]=='0') root*=2;else root=root*2+1;}printf("%c",lefts[root-(1<<n)]);//叶子节点的顺序标号 }printf("\n");
}
int main(){int kase=0;while(~scanf("%d",&n)&&n){printf("S-Tree #%d:\n", ++kase);solve();printf("\n");}return 0;
}