1105 S-Trees
問題概要
二分木が与えられる。キーの値が与えられるとき、葉のノードの値を出力せよ。
解法
問題文読解が面倒だが、やることは単に与えられた二分木を辿って葉の値を出力するだけ。
深さjのノードが1の場合、葉の位置は2^(n-j-1)ずれる。
ソースコード
int n,m; char bin[1000],in[9]; int main() { int cs=0; while(scanf("%d",&n),n) { rep(i,n)scanf("%s",in); scanf("%s%d",bin,&m); printf("S-Tree #%d:\n",++cs); rep(i,m) { int p=0; scanf("%s",in); rep(j,n)p+=in[j]=='1'?1<<n-j-1:0; putchar(bin[p]); } puts("\n"); } return 0; }