统计二叉树中等于给定值x的结点个数。

[复制链接]
查看11 | 回复0 | 2009-6-20 14:11:13 | 显示全部楼层 |阅读模式
#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));
}想了一下还是用递归更简单,你看看吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行