HeJ_1996 2017-10-13 05:03 采纳率: 100%
浏览 814
已采纳

结构体引用问题,代码调试问题

写了一个用先序序列和中序序列确定一颗二叉树的代码
但是结构体部分好像出现了问题,刚开始学不久,找了很久都没有找的问题在哪,请大家帮忙看下,然后结构体引用的时候总是弹不出成员列表,不知道为什么

 # include <stdio.h>
# include <malloc.h>
# include <string.h>

void exit(int);

# define MAX 100

typedef struct node 
{
    char d;
    struct node *lchild, *rchild;
}Tnode;

void MK(char in[], char is, char ie, char pre[], char pres, char pree, Tnode**r)    //is第一个值。ie最后一个值     
{
    int i;
    if (is>ie || pres>pree)
    *r=NULL; 
    else
    {
        *r = (Tnode*)malloc(sizeof(Tnode))
        (*r)->d = pre[pres];                                                            //确定根节点
        for (i=is;i<=ie;i++)
        {
            if(in[i]==pre[pres])                                                    //在中序遍历中找到根节点,来确定左右子树
            MK(in,is,i-1,pre,pres+1,pres+i-is,&(*r)->lchild);                                       //左子树
            MK(in,i+1,ie,pre,pres+i-is+1,pree,&(*r)->rchild);
            break;
        } 
        if(i>ie)
        {                                                           //没有找到根节点
        printf("输入错误");
        exit(1);
        }
    }
}

void postorder(Tnode *r)                                            //遍历输出树的后序序列
{
    if(r)
    {
        postorder(r->lchild);
        postorder(r->rchild);
        printf("%c",r->d);  
    }   
}

int leaf(Tnode*r)
{
    if(r==NULL)
    return 0;
    else if(r->lchild==NULL && r->rchild==NULL)
    return 1;
    else 
    return leaf(r->rchild)+leaf(r->lchild);
}

int height(Tnode*r)
{
    int h1,h2;
    if (r==NULL)
    return 0;
    else
    {
        h1 = height(r->lchild);
        h2 = height(r->rchild);
        return 1+(h1>h2?h1:h2);
    }
}

int main()
{
    Tnode* r = NULL;
    char in[MAX], pre[MAX];
    printf("请输入前序序列");
    gets(pre);
    printf("请输入中序序列");
    gets(in);
    MK(in,0,strlen(in)-1,pre,0,strlen(pre)-1,&r);
    printf("\n后续遍历序列为:\n");
    postorder(r);
    printf("\n叶节点的个数为:%d\n",leaf(r));
    printf("\n高度为%d\n",height(r)); 
    return 0;
}

错误信息23行 [Error] expression cannot be used as a function

  • 写回答

2条回答 默认 最新

  • leumber 2017-10-13 05:48
    关注

    你22行是不是少了一个分号 ;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?