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

论坛 期权论坛 期权     
271272975   2018-4-26 13:51   7934   1
如题,只需要算法,不需要完整程序。最好加注释
分享到 :
0 人收藏

1 个回复

倒序浏览
2#
秋天来了仔陈  1级新秀 | 2018-4-30 02:00:44
#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));
    }
想了一下还是用递归更简单,你看看吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP