判断一个给定的二叉树是否为满二叉树。(3)
注意只有1个节点的情况。
不考虑空树情况
- 输入
-
输入有n+1行。第一行为测试数据的组数n, 一下的n行为n棵二叉树的广义表表示法所表示的二叉树。树中的元素为char
- 输出
-
输入一共有n行,分别对应输入的n棵二叉树。如果是满二叉树,输出Yes. 如果不是,输出No.
无须建树,通过括号判断即可
#include <stdio.h> #include <string.h> #include <math.h> main() { int number,te; int a[3000]; char b[3000]; int i; int count; scanf("%d",&number); for(te=1;te<=number;te++) { scanf("%s",&b); count=0; memset(a,0,sizeof(a)); for(i=0;b[i]!='\0';i++) { if(b[i]!='('&&b[i]!=','&&b[i]!=')') a[count]++; if(b[i]=='(') count++; if(b[i]==')') count--; } for(i=0;a[i]!=0;i++) { if(a[i]!=pow(2,i)) { break; } else continue; } if(a[i]==0) printf("Yes.\n"); else printf("No.\n"); } }