您的位置:首页 > 其它

C 语言程序设计实践 7.8 Ytaaa 的二叉树

2014-12-08 00:03 260 查看




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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: