gpt4 book ai didi

c++ - 二叉树高度函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:21 24 4
gpt4 key购买 nike

我正在研究一个函数来查找二叉搜索树的高度。我找到了一个看起来应该有效的方法,但我一直收到此错误,我不知道它有什么问题:PA5.exe 中 0x00903417 处未处理的异常:0xC0000005:访问冲突读取位置 0x00000004。

这是我的高度函数...

template <class T>
int BST<T>::height()
{

return displayHeight(mRootNode);

}

template <class T>
int BST<T>::displayHeight(BST<T> *node)
{
if (node = NULL)
{
return 0;
}

int left = displayHeight(node->mLeft);
int right = displayHeight(node->mRight);

if (left > right)
return 1 + left;
else
return 1 + right;
}

这是main函数中的实现...

 cout << endl << "height: " << tree.height();

如果我还应该包括任何其他内容,请告诉我。谢谢!

最佳答案

if (node = NULL)

应该是

if (node == NULL)

因为在 C++ 中 = 是一个赋值运算符,而 == 是用于比较的关系运算符。

为什么会崩溃?

当您执行 if (node = NULL) 时,您正在将 NULL 分配给节点,因为 NULL 是 0 if 条件失败。因此,您继续对节点的子节点递归调用该函数。现在假设 node 在第一次调用该函数时实际上是 NULL,您将对 NULL 的左右子节点进行递归调用!!!导致崩溃。

关于c++ - 二叉树高度函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13041948/

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