gpt4 book ai didi

c++ - 使用 In Order 遍历成员函数时出现异常(堆栈溢出)问题

转载 作者:行者123 更新时间:2023-11-28 01:19:07 25 4
gpt4 key购买 nike

我正在尝试在二叉搜索树上测试我的递归 In Order 遍历函数,但当我调用该特定函数以显示树上的节点时,我不断抛出异常(堆栈溢出)。我是否缺少代码的关键部分?

我已经尝试在其他地方查找如何处理异常,但到目前为止没有任何效果。我还将该函数更改为 const,因为我不确定这是否是编译器 (Visual Studio 2017) 想要的。我已经测试了 Pre-Order 和 Post-Order 遍历函数并且都按预期工作。

In-Order 遍历函数是另一个类的私有(private)成员函数,由一个单独的公共(public)函数调用,该函数简单地将树的 root 传递给 displayInOrder

void displayInOrder(TreeNode *&root) const {

if (root == NULL) {

return;

}

else if (root) {

displayInOrder(root);
cout << root->value << " ";
displayInOrder(root->right);
}
}

Exception thrown at 0x00C22FE9 in Binary Tree Application.exe: 0xC0000005: Access violation writing location 0x00CA0F60.

最佳答案

displayInOrder(root);

应该是

displayInOrder(root->left);

第一个版本是无限递归的,因为您使用完全相同的参数调用相同的函数。正如您所发现的,这会导致堆栈溢出。

关于c++ - 使用 In Order 遍历成员函数时出现异常(堆栈溢出)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57401068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com