Frankjunyu 2015-11-07 05:07 采纳率: 58.8%
浏览 1689
已采纳

自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急.

自己编的c语言建立二叉树的代码,运行时出错了,自己找不到错误,求大神帮忙,指点,急.

#include
#include
typedef struct tnode Tnode;
struct tnode
{
Tnode *left;
Tnode *right;
int data;
};
Tnode *new_tnode(int data)
{
Tnode *new = malloc(sizeof(Tnode));
new->left=NULL;
new->right=NULL;
new->data=data;
return new;
}
void insert(Tnode *root,Tnode *tree)
{
if(root==NULL)
{
tree=root;
return;
}
if(root->datadata)
{
tree->left=root;
insert(root,tree->left);
}
else if(root->data>tree->data)
{
tree->right=root;
insert(root,tree->right);
}
}
void printout(Tnode *tree)
{
if(tree==NULL)
{
return;
}
printf("%d",tree->data);
printout(tree->left);
printout(tree->right);
}
int main()
{
Tnode *tree=NULL;
int i;
int data;
for(i=0;i<10;i++)
{
scanf("%d",&data);
insert(new_tnode(data),tree);
}
printout(tree);

return 0;

}

  • 写回答

3条回答 默认 最新

  • havedream_one 2015-11-07 07:27
    关注
    #include<stdio.h>
    
    typedef struct tnode Tnode;
    struct tnode
    {
        Tnode *left;
        Tnode *right;
        int data;
    };
    Tnode *new_tnode(int data)
    {
        //不能用new定义变量,是保留字
        Tnode *node = (Tnode* )malloc(sizeof(Tnode));
        node->left=NULL;
        node->right=NULL;
        node->data=data;
        return node;
    }
    void insert(Tnode *root,Tnode *node)
    {
        if(root == NULL)
        {
            root = node;
            return;
        }
        if(node->data < root->data )
        {
            if(root->left == NULL){
                root->left = node;
            }else{
                insert(root->left,node);
            }
        }
        else if(node->data > root->data )
        {
            if(root->right == NULL){
                root->right = node;
            }else{
                insert(root->right,node);
            }
        }
    }
    void printout(Tnode *tree)
    {
        if(tree == NULL)
        {
            return;
        }
        printf("%d",tree->data);
        printout(tree->left);
        printout(tree->right);
    }
    int main()
    {
        Tnode *tree = NULL;
        int i;
        int data;
    
        for(i=0; i<10; i++)
        {
            printf("请输入数据%d:",(i+1));
            scanf("%d",&data);
            //这里加上&符号,否则的话tree一直是null导致输出孔
            insert(&tree,new_tnode(data));
        }
        printf("输出数据:\n");
        printout(tree);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题