二叉树指针错误
Binary tree pointer error
我有三个函数来管理二叉树:
static void insertion(Noeud* &top, Noeud *newNoeud)
{
if(top == NULL)
top = newNoeud;
else if(newNoeud->nbr < top->nbr)
insertion(top->left, newNoeud);
else
insertion(top->right, newNoeud);
}
static void affichage(Noeud* &top) //displaying
{
if(top != NULL)
{
affichage(top->left);
affichage(top->right);
cout << "n" << top->nbr;
}
}
static Noeud* recherche(Noeud* &top, int nbr) //searching
{
while(top != NULL)
{
if(top->nbr == nbr)
return(top);
else if(nbr < top->nbr)
top = top->left;
else
top = top->right;
}
}
但是,我不断收到错误,说我在尝试读取内存点时违反了访问权限。我猜这与我的指针有关,但我猜不出它是什么。
recherche
更改了它不应该更改的top
。
这甚至编译了吗?
static Noeud* recherche(Noeud* &top, int nbr) //searching
{
while(top != NULL)
{
if(top->nbr == nbr)
return(top);
else if(nbr < top->nbr)
top = top->left;
else
top = top->right;
}
}
这并不总是返回一个值...
应该是这样的:
static Noeud* recherche(Noeud* &top, int nbr) //searching
{
Noeud* it = top; //use a temporary pointer for the search.
while(it != NULL)
{
if(it->nbr == nbr)
return(it);
else if(nbr < it->nbr)
it = it->left;
else
it = it->right;
}
return it; //always return a value.
}
您的搜索方法使您的顶级节点不再指向top
。
相关文章:
- 删除指向指针的指针是运行时错误吗
- 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 中获取错误指针
- 正在解决编译器错误:指针可能未初始化