小编nym*_*ahi的帖子

二叉树高度函数

我正在开发一个函数来查找二叉搜索树的高度.我找到了一个似乎应该工作的方法,但我一直得到这个错误,我不知道它有什么问题: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)

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

c++ binary-tree data-structures

4
推荐指数
1
解决办法
1万
查看次数

在二叉搜索树中显示节点的路径

我正在尝试显示从BST的根节点到目标节点的路径.我在前两层的功能很好,但之后就搞砸了.例如,测试编号为6,9,4,11,10(按此顺序插入).如果我搜索6,9或4,它可以工作(例如:"6 9").但是,如果我尝试11或10,它会同时显示它们,并且不按顺序显示.我有点难过为什么.任何想法都会很棒!

template <class T>
void BST<T>::displayPath(T searchKey, BST<T> *node)
{
    if (searchKey == node->mData)
    {
        cout << node->mData << " ";
    }

    else if (searchKey < node->mData )
    {
        cout << node->mData << " ";
        displayPath(searchKey, node->mLeft);
    }
    else// (searchKey > node->mData)
    {
        cout << node->mData << " ";
        displayPath(searchKey, node->mRight);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是插入功能.数字按上面的顺序插入.

template <class T>
void BST<T>::insert(BST<T> *&node, T data)
{
   // If the tree is empty, make a new node and make it 
   // the root …
Run Code Online (Sandbox Code Playgroud)

c++ binary-search-tree

1
推荐指数
1
解决办法
1553
查看次数