AC代码:
#include <stdio.h> #include <math.h> #include <string.h> int Binarytree (int i,int l,int r); int num[100000]={0}; char c[100000][4]; int main() { int k,i; scanf("%d",&k);//读入树高 for (i=1;i<=(pow(2,k-1)-1);i++) scanf("%s",c[i]); //读入前k-1行每个节点的运算符 for (i=pow(2,k-1);i<=(pow(2,k)-1);i++) scanf("%d",&num[i]);//读入第k行每个节点的数字 for(i=(pow(2,k-1)-1);i>=1;i--) num[i]=Binarytree(i,num[2*i],num[2*i+1]); //逆向运行,把左右儿子运算的结果,保存在父节点里 printf("%d\n",num[1]); //输出根节点的值 return 0; } int Binarytree (int i,int l,int r) { if (strcmp(c[i],"+")==0) return l+r; else if (strcmp(c[i],"-")==0) return l-r; else if (strcmp(c[i],"max")==0) return l>r?l:r; else return l>r?r:l; }