程序填空题:计算二叉树中度为1的结点个数
统计二叉树度为1的结点个数。
```
#include
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T){
char ch;
cin >> ch;
if(ch=='#') T=NULL;
else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
int NodeCount ( BiTree T)
{
if(@@[T==NULL](2)) return 0;
if(T->lchild==NULL&&T->rchild!=NULL)
return @@[NodeCount(T->rchild)+1](2);
if(T->lchild!=NULL&&T->rchild==NULL)
return @@[NodeCount(T->lchild)+1](2);
@@[return NodeCount(T->lchild)+NodeCount(T->rchild)](2);
}
int main(){
BiTree T;
CreateBiTree(T);
printf("%d", NodeCount(T));
return 0;
}
```
### 输入样例1:

```in
AB#DF##G##C##
```
### 输出样例1:
1
答案:
第1空:T==NULL
第2空:NodeCount(T->rchild)+1
第3空:NodeCount(T->lchild)+1
第4空:return NodeCount(T->lchild)+NodeCount(T->rchild)
```
#include
using namespace std;
typedef struct BiNode{
char data;
struct BiNode *lchild,*rchild;
}BiTNode,*BiTree;
void CreateBiTree(BiTree &T){
char ch;
cin >> ch;
if(ch=='#') T=NULL;
else{
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
int NodeCount ( BiTree T)
{
if(@@[T==NULL](2)) return 0;
if(T->lchild==NULL&&T->rchild!=NULL)
return @@[NodeCount(T->rchild)+1](2);
if(T->lchild!=NULL&&T->rchild==NULL)
return @@[NodeCount(T->lchild)+1](2);
@@[return NodeCount(T->lchild)+NodeCount(T->rchild)](2);
}
int main(){
BiTree T;
CreateBiTree(T);
printf("%d", NodeCount(T));
return 0;
}
```
### 输入样例1:

```in
AB#DF##G##C##
```
### 输出样例1:
1
答案:
第1空:T==NULL
第2空:NodeCount(T->rchild)+1
第3空:NodeCount(T->lchild)+1
第4空:return NodeCount(T->lchild)+NodeCount(T->rchild)