scorescore 2022-04-07 11:43 采纳率: 80%
浏览 32
已结题

写的二叉树一直编译不过去,希望帮我看看

问题遇到的现象和发生背景

写的二叉树排序和输出。一直无法编译通过,找不到问题所在,感谢指教

问题相关代码,请勿粘贴截图

#include<stdio.h>
#include<stdlib.h>

//#include"treefunction.h"

typedef int Element;

typedef struct Tnode
{
Element data;
struct Tnode *right;
struct Tnode *left;

}Tnode;

Tnode *insert(Tnode *root,Tnode *p)
{
if(root==NULL)
{
return p;
}
else
{
if(root->datadata)
{
root->right=insert(root->right);
}
if(root->data>p->data)
{
root->left=insert(root->left);
}
return root;
}

void p1_printf(Tnode *root)
{
if(root==NULL)
{
return ;

}
else
{
    printf("%d",root->data);
    p1_printf(root->left);
    p1_printf(root->right);

}

}
void p2_printf(Tnode *root)
{
if(root==NULL)
{
return ;
}

p2_printf(root->left);
printf("%d",root->data);
p2_printf(root->right);     

}

void p3_printf(Tnode *root)
{
if(root==NULL)
{
return ;
}
p3_printf(root->left);
p3_printf(root->right);
printf("%d",root->data);
}

int main()
{
int d;
Tnode *root=NULL;
scanf("%d",&d);
while(1)
{
if(d==0)
{
break;

    }   
    Tnode *p=malloc(sizeof(*p));
    p->data=d;
    p->right=NULL;
    p->left=NULL;
    root=insert(root,p);
    p1_printf(root);
    p2_printf(root);
    p3_printf(root);
    

}
return 0;

}

运行结果及报错内容

avl_tree.c: In function ‘insert’:
avl_tree.c:28:21: error: too few arguments to function ‘insert’
root->right=insert(root->right);

avl_tree.c:18:8: note: declared here
Tnode *insert(Tnode *root,Tnode *p)

avl_tree.c:32:24: error: too few arguments to function ‘insert’
root->left=insert(root->left);

avl_tree.c:18:8: note: declared here
Tnode *insert(Tnode *root,Tnode *p)

avl_tree.c:106:1: error: expected declaration or statement at end of input
}

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • a5156520 2022-04-07 12:06
    关注

    一些语法格式错误,如调用参数少一个,或者函数少一个括号,修改了一下以上语法格式错误,逻辑问题没有修改,可以正常编译了,如下:

    
    #include<stdio.h>
    #include<stdlib.h>
    
    //#include"treefunction.h"
    
    typedef int Element;
    
    typedef struct Tnode
    {
    Element data;
    struct Tnode *right;
    struct Tnode *left;
    
    }Tnode;
    
    Tnode *insert(Tnode *root,Tnode *p)
    {
        if(root==NULL)
        {
        return p;
        }
        else
        {
        if(root->data)
        {
        root->right=insert(root->right,p);
        }
        if(root->data>p->data)
        {
        root->left=insert(root->left,p);
        }
        return root;
    }
    
    }
    void p1_printf(Tnode *root)
    {
        if(root==NULL)
        {
        return ;
        
        }
        else
        {
            printf("%d",root->data);
            p1_printf(root->left);
            p1_printf(root->right);
         
        }
    }
    
    void p2_printf(Tnode *root)
    {
    if(root==NULL)
    {
    return ;
    }
    
    p2_printf(root->left);
    printf("%d",root->data);
    p2_printf(root->right);     
    }
    
    void p3_printf(Tnode *root)
    {
    if(root==NULL)
    {
    return ;
    }
    p3_printf(root->left);
    p3_printf(root->right);
    printf("%d",root->data);
    }
    
    int main()
    {
    int d;
    Tnode *root=NULL;
    scanf("%d",&d);
    while(1)
    {
    if(d==0)
    {
    break;
    
        }   
        Tnode *p=(Tnode *)malloc(sizeof(*p));
        p->data=d;
        p->right=NULL;
        p->left=NULL;
        root=insert(root,p);
        p1_printf(root);
        p2_printf(root);
        p3_printf(root);
        
     
    }
    return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表