Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二叉树指针错误中的插入_C++_Binary Tree_Insertion - Fatal编程技术网

C++ 二叉树指针错误中的插入

C++ 二叉树指针错误中的插入,c++,binary-tree,insertion,C++,Binary Tree,Insertion,下面给出的代码是我为插入二叉树而编写的代码。该代码适用于根节点,但不适用于其子节点。我知道在插入子节点时必须传递对根节点的引用,但不知道如何实现它。要改变什么 #include <stdio.h> #include <stdlib.h> struct bintree { int data; struct bintree *left; struct bintree *right; }; typedef struct bintree btree; btree* newn

下面给出的代码是我为插入二叉树而编写的代码。该代码适用于根节点,但不适用于其子节点。我知道在插入子节点时必须传递对根节点的引用,但不知道如何实现它。要改变什么

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

struct bintree
{
int data;
struct bintree *left;
struct bintree *right;
};

typedef struct bintree btree;

btree* newnode(btree *node, int data)
{
    node=(btree*)malloc(sizeof(btree));
    node->data=data;
    node->left=NULL;
    node->right=NULL;
    return node;
}

btree* insert(btree *node, int data)
{
    if(node==NULL)
    {
        return (newnode(node, data));
    }
    else
    {
        if(data<=node->data)
        {
            insert(node->left, data);
            return(node);
        }
        else
        {
            insert(node->right, data);
            return(node);
        }
    }
}

int main()
{
    btree *root=NULL;
    root=insert(root, 5);
    insert(root, 3);
    insert(root, 6);
    return 0;
}
#包括
#包括
结构二叉树
{
int数据;
结构bintree*左;
结构bintree*右;
};
typedef结构bintreebtree;
btree*newnode(btree*node,int数据)
{
node=(btree*)malloc(sizeof(btree));
节点->数据=数据;
节点->左=空;
节点->右=空;
返回节点;
}
btree*插入(btree*节点,int数据)
{
if(node==NULL)
{
返回(newnode(节点,数据));
}
其他的
{
如果(数据)
{
插入(节点->左侧,数据);
返回(节点);
}
其他的
{
插入(节点->右侧,数据);
返回(节点);
}
}
}
int main()
{
btree*root=NULL;
根=插入(根,5);
插入(根,3);
插入(根,6);
返回0;
}
在此代码中,如果节点为空,则将其发送到newnode函数,并分配内存和数据。在其他情况下,使用插入功能。

更改此选项:

 if(data<=node->data)
    {
        insert(node->left, data);
        return(node);
    }
    else
    {
        insert(node->right, data);
        return(node);
    }
更改此项:

 if(data<=node->data)
    {
        insert(node->left, data);
        return(node);
    }
    else
    {
        insert(node->right, data);
        return(node);
    }

请避免使用
malloc
。请改用
operator new
。请避免使用
malloc
。改用
操作员新建
root = insert(root, 5);
root = insert(root, 3);
root = insert(root, 6);