二叉树高度函数

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)

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

cod*_*ict 6

if (node = NULL)
Run Code Online (Sandbox Code Playgroud)

应该

if (node == NULL)
Run Code Online (Sandbox Code Playgroud)

因为在C++中=是赋值运算符,并且==是用于比较的关系运算符.

撞车为什么?

当你这样做if (node = NULL),你要分配NULL到节点,因为NULL是0if条件失败.所以你继续在节点的子节点上递归调用函数.现在假设node第一次调用函数时实际上是NULL,你将对NULL的左右孩子进行递归调用!导致崩溃.