描述
一个二叉树的繁茂度定义为各层结点数与树的高度的乘积。 为计算方便树根的高度为0.例如树A(B(D,),C(,)) 的繁茂度为1×0+2×1+1×2=4 (5)
-
输入
-
输入有n+1行,第一行为测试数据的组数n. 下面的n行分别为用广义表表示的n棵二叉树,树中的元素用char表示
输出
-
输出一共有n行,分别对应n组测试数据,输出此棵树的繁茂度
样例输入
-
1
-
A(B(D,),C(,))
样例输出
-
4
数组模拟即可
#include <stdio.h>
#include<string.h>
main()
{
int number;
int length;
int a[100];
char s[1000];
int i;
int up;
int sum;
int max;
scanf("%d",&number);
while(number--)
{
up=max=0;
sum=0;
memset(a,0,sizeof(a));
scanf("%s",&s);
length=strlen(s);
for(i=0;i<length;i++)
{
if(s[i]!='('&&s[i]!=')'&&s[i]!=',')
{
a[up]++;
}
if(s[i]=='(')
{
up++;
max++;
}
if(s[i]==')')
up--;
}
for(i=0;i<=max;i++)
sum+=a[i]*i;
printf("%d\n",sum);
}
}