各位来帮我看看我编的二叉树的代码。
#include<stdio.h>#include<stdlib.h>
#include <string.h>
using namespace std;
typedef struct BTNode//建立叶子节点
{
char data;//存放数据
struct BTNode *lchild;//左孩子
struct BTNode *rchild;//右孩子
}BTNode,*BTtree;
void createBTtree(BTtree &L)//创建一棵二叉树
{
char ch;
scanf("%c",&ch);
if(ch='#')//若输入为#,则为空树
{
L=NULL;
}
else
{
L=new BTNode;//new一个节点
L->data=ch;//存入数据
}
createBTtree(L->lchild);//递归调用自己
createBTtree(L->rchild);
}
int leafnodenumber(BTtree &ROOT)//得到这颗二叉树的叶子节点
{
int lnum,rnum;
if(ROOT==NULL)//如果根节点为null,返回0
return 0;
if(ROOT->lchild==NULL&&ROOT->rchild==NULL)//左右孩子为null,返回1
return 1;
lnum=leafnodenumber(ROOT->lchild);//递归调用自己
rnum=leafnodenumber(ROOT->rchild);
return(lnum+rnum);
}
int main()
{
int i;
BTtree T;
createBTtree(T);
i=leafnodenumber(T);//把叶子节点数给i
printf("%d\n",i);//输出
return 0;
}
大家好,这是我自己写的一个关于计算二叉树中叶子节点的数目的代码,为了方便大家查看我加了注释,这段代码总是无法输出,会崩掉,帮我看看我硬是没发现bug。
输入样例
ABC##DE#G##F###
输出样例
3