在使用 In Order 遍历成员函数时引发异常(堆栈溢出)时出现问题
Having an issue with an exception (Stack overflow) being thrown when using an In Order traversal member function
我正在尝试在二叉搜索树上测试我的递归顺序遍历函数,但是当我调用该特定函数以显示树上的节点时,我不断收到异常(堆栈溢出(。我是否缺少代码的关键部分?
我尝试在其他地方查找如何处理异常,但到目前为止没有任何效果。我还将函数更改为const
,因为我不确定这是否是编译器(Visual Studio 2017(想要的。我已经测试了预购和后序遍历函数,两者都按预期工作。
按顺序遍历函数是另一个类的私有成员函数,由单独的公共函数调用,该函数只是将树的root
传递给displayInOrder
。
void displayInOrder(TreeNode *&root) const {
if (root == NULL) {
return;
}
else if (root) {
displayInOrder(root);
cout << root->value << " ";
displayInOrder(root->right);
}
}
在二叉树应用程序中0x00C22FE9抛出异常.exe: 0xC0000005:访问违规写入位置0x00CA0F60。
displayInOrder(root);
应该是
displayInOrder(root->left);
第一个版本是无限递归的,因为您正在使用完全相同的参数调用相同的函数。正如您所发现的,这会导致堆栈溢出。
相关文章:
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 我的 int main() 中出现堆栈溢出错误
- C++ 对象数组堆栈溢出
- 有没有一种方法可以捕获进程中的堆栈溢出?C++Linux
- 对象接收堆栈溢出异常 c++ 的排序向量
- 将公共递归转换为尾递归,因为大型输入的堆栈溢出
- C++ 中递归期间的堆栈溢出
- 启动 dll 时 C# 环境堆栈溢出
- 在C++中使用数组时如何防止堆栈溢出?
- 如何修复递归函数导致的堆栈溢出错误?C++
- 当我尝试为结构分配新指针时出现堆栈溢出错误
- 为什么析构函数无休止地调用自己(导致堆栈溢出)?
- 为什么堆栈溢出?如有建议,不胜感激
- 主函数执行时C++堆栈溢出异常
- 如何在不导致堆栈溢出的情况下计算非常大的数字和很小的 HCF.我正在使用欧几里得算法
- 我正在尝试使用回溯来解决 N queen 问题,但在编译时它会给出运行时错误(动态堆栈缓冲区溢出)
- 如何在Windows上报告堆栈缓冲区溢出
- 如何抑制来自 gcc 中地址清理器的堆栈缓冲区溢出
- 声明大数组时堆栈/堆溢出
- c++中栈溢出和分段错误的危险