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 用verilog实现tanh函数和softplus函数
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题