函数题:表达式中运算数计数(二叉树的遍历)
请编写程序,实现统计二叉树表示的表达式中操作数的个数。例如,下图表示:A-F*G+C,其中运算数共有4个。(提示:运算数均在叶子结点上,叶子结点数即为运算数个数)

### 函数接口定义:
c++
BiTree Create();
/*按先序输入创建一棵二叉树,返回二叉树根节点指针。*/
int OperandCount(BiTree T);
/*T是二叉树树根指针,函数OperandCount返回二叉树中操作数的个数,若树为空,则返回0。题目保证所给二叉树一定是正确的表达式。*/
### 裁判测试程序样例:
c++
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree Create();
int OperandCount ( BiTree T);
int main()
{
BiTree T;
T = Create();
printf("%d\n", OperandCount(T));
return 0;
}
/* 请根据下面提示,补充横线上的代码,并把两个函数的完整部分复制到答题框内 */
BiTree Create(){
char ch;
BiTree T;
scanf("%c",&ch);
if(ch=='#')
____________________________;//若输入字符为#,则该树为空
else{
T=(BiTree)malloc(sizeof(BiTNode)); //创建一个新结点T
____________________; //给新结点的数据域赋值
T->lchild=Create();
__________________________;//创建右子树
}
return T;
}
int OperandCount(BiTree T){
if(T==NULL)
___________________; //若树为空则个数为0
if(_______________________)//若根节点为叶子结点
return 1;
else
return _______________________________; //否则返回左右子树上叶子结点之和
}
/* 请在这里填写答案 */

### 输入样例:
对于上图所示的二叉树,输入数据为扩展的先序序列:
+-A##*F##G##C##
in
+-A##*F##G##C##
### 输出样例:
out
4
答案:若无答案欢迎评论

### 函数接口定义:
c++
BiTree Create();
/*按先序输入创建一棵二叉树,返回二叉树根节点指针。*/
int OperandCount(BiTree T);
/*T是二叉树树根指针,函数OperandCount返回二叉树中操作数的个数,若树为空,则返回0。题目保证所给二叉树一定是正确的表达式。*/
### 裁判测试程序样例:
c++
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct BiTNode
{
ElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
BiTree Create();
int OperandCount ( BiTree T);
int main()
{
BiTree T;
T = Create();
printf("%d\n", OperandCount(T));
return 0;
}
/* 请根据下面提示,补充横线上的代码,并把两个函数的完整部分复制到答题框内 */
BiTree Create(){
char ch;
BiTree T;
scanf("%c",&ch);
if(ch=='#')
____________________________;//若输入字符为#,则该树为空
else{
T=(BiTree)malloc(sizeof(BiTNode)); //创建一个新结点T
____________________; //给新结点的数据域赋值
T->lchild=Create();
__________________________;//创建右子树
}
return T;
}
int OperandCount(BiTree T){
if(T==NULL)
___________________; //若树为空则个数为0
if(_______________________)//若根节点为叶子结点
return 1;
else
return _______________________________; //否则返回左右子树上叶子结点之和
}
/* 请在这里填写答案 */

### 输入样例:
对于上图所示的二叉树,输入数据为扩展的先序序列:
+-A##*F##G##C##
in
+-A##*F##G##C##
### 输出样例:
out
4
答案:若无答案欢迎评论