nym*_*ahi 4 c++ binary-tree data-structures
我正在开发一个函数来查找二叉搜索树的高度.我找到了一个似乎应该工作的方法,但我一直得到这个错误,我不知道它有什么问题: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;
}
Run Code Online (Sandbox Code Playgroud)
这是主要功能的实现......
cout << endl << "height: " << tree.height();
Run Code Online (Sandbox Code Playgroud)
如果我应该包括其他任何内容,请告诉我.谢谢!
if (node = NULL)
Run Code Online (Sandbox Code Playgroud)
应该
if (node == NULL)
Run Code Online (Sandbox Code Playgroud)
因为在C++中=是赋值运算符,并且==是用于比较的关系运算符.
撞车为什么?
当你这样做if (node = NULL),你要分配NULL到节点,因为NULL是0在if条件失败.所以你继续在节点的子节点上递归调用函数.现在假设node第一次调用函数时实际上是NULL,你将对NULL的左右孩子进行递归调用!导致崩溃.