题目描述
一个二叉树的繁茂度定义为各层结点数与树的高度的乘积。为计算方便树根的高度为0.例如树A(B(D,),C(,)) 的繁茂度为1×0+2×1+1×2=4
输入
输入有n+1行,第一行为测试数据的组数n. 下面的n行分别为用广义表表示的n棵二叉树,树中的元素用char表示
输出
输出一共有n行,分别对应n组测试数据,输出此棵树的繁茂度
样例输入
1
A(B(D,),C(,))
样例输出
4
参考代码
#include<stdio.h>
#include<string.h>
int main()
{
char str[1000];
int i,t,len,deep,sum;
scanf("%d",&t);
while(t--)
{
sum=deep=0;
scanf("%s",str);
len=strlen(str);
for (i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
sum+=deep; else if(str[i]=='(')
deep++; else if(str[i]==')')
deep--;
}
printf("%dn",sum);
}
return 0;
}
解析
暂无