#include
#include
#include
typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}//节点类型
BiTNode,*BiTree;
BiTree CreateBiTree()//先序递归创建树
{
int p;BiTree T;
scanf("%d",&p);
if(p==0)
T=NULL;
else
{
T=(BiTNode *)malloc(sizeof(BiTNode));//分配空间
T->data=p;
T->lchild=CreateBiTree();//给左孩子建
T->rchild=CreateBiTree();//给右孩子建
}
return (T);
}
int Sum(BiTree T,int x)//计算个数的函数(用递归的方法)
{
int n=0;
if(T==NULL)
return 0;
if(T->data==x)
n=1;
return(Sum(T->lchild,x)+Sum(T->rchild,x)+n);
}
void main()//主函数
{
BiTree Ta;int x;
printf("请创建树");
Ta=CreateBiTree();
printf("请输入元素:\n");
scanf("%d",&x);
printf("个数为:\n");
printf("%d",Sum(Ta,x));
}
想了一下还是用递归更简单,你看看吧。 |