我正在开发一个函数来查找二叉搜索树的高度.我找到了一个似乎应该工作的方法,但我一直得到这个错误,我不知道它有什么问题: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)
如果我应该包括其他任何内容,请告诉我.谢谢!
我正在尝试显示从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)