Description
已知一棵二叉树按顺序存储结构存储。按输入结点数和各结点元素值,创建一个一维数组,存储二叉树,并计算叶子和非叶子结点数。
Input
输入为两行
第一行:二叉树的结点数n(1<n<100)
第二行:输入一棵二叉树各结点(含虚结点)的值。其中0表示虚结点(不存在此结点),#表示结束标志。
Output
输出为两行
第一行:输出叶子结点的个数;
第二行:输出非叶子结点的个数。
Sample Input
6
A B C 0 D E 0 0 0 F #
Sample Output
2
4
//二叉树应用
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
char a[1005];
char b[1005];
for(int i=0;i<1005;i++){
a[i]='0';
}
for(int i=0;i<1005;i++){
b[i]='0';
}
scanf("%d ",&n);
gets(a);
int len1=strlen(a);
int cnt=0;
for(int i=0;i<len1;i++){
if(a[i]!=' '){
b[cnt]=a[i];
cnt++;
}
}
int ans=0;
for(int i=0;i<len1/2+1;i++){
if(b[i]=='#'){
break;
}
if(b[i]!='0'){
if((b[2*i+1]=='0'||b[2*i+1]=='#')&&(b[2*i+2]=='0'||b[2*i+2]=='#')){
ans++;
}
}
}
printf("%d\n",ans);
printf("%d",n-ans);
}