插入二进制树指针错误
Insertion in a binary tree pointer fault
下面给出的代码是我为插入二进制树而编写的代码。该代码适用于根节点,但不适用于其子节点。我知道在插入子节点时必须传递对根节点的引用,但不知道如何实现。要更改什么?
#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;
}
在此代码中,如果节点为null,则会将其发送到newnode函数,并为其分配内存和数据。在其他情况下,使用插入函数。
更改此项:
if(data<=node->data)
{
insert(node->left, data);
return(node);
}
else
{
insert(node->right, data);
return(node);
}
至:
if(data<=node->data)
{
node->left = insert(node->left, data);
}
else
{
node->right = insert(node->right, data);
}
return (node);
主菜单中的代码也应该是:
root = insert(root, 5);
root = insert(root, 3);
root = insert(root, 6);
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 运行几次后合并段错误C++(指针算术)
- LinkedList实现C 错误指针间接
- 虚幻引擎 4.18.0,VS2017,不允许指向不完整类类型的错误指针
- Xcode 错误:指针和双精度之间的比较
- 未分配正在释放的本机node.js插件错误指针
- 错误指针:解析令牌时无法计算表达式
- C++-va_list错误指针
- 为什么我收到错误" (指针的名称)不是模板)?
- mmap 错误:分段错误/指针无效错误
- C++ Winsock2 错误指针断点触发
- C++ 代码中的错误指针错误
- 数组错误指针上的增量运算符
- MAKEINTRESOURCE 返回资源 ID 的错误指针
- 分段错误C++指针
- 段错误指针
- C++ 错误 :: 指针数组的EXC_BAD_ACCESS
- 通过模糊 mat 从 std::vector: <int>cv::Exception 中获取错误指针
- 正在解决编译器错误:指针可能未初始化