我正在编写一个带搜索功能的二叉树。该函数应该采用参数x来表示要搜索的值,一旦找到它,确定它是否是叶子。如果未找到该值,则搜索函数将返回false。
这就是我所拥有的一个错误,它给了我一个从1到100的每个值的错误回报。二叉树被初始化为100个值。
bool search(Node<T>* ¤tNode, const T& x) const
{
//~ cout << "CURRENT NODE DATA: " << currentNode->data << " : ";
/* FUNCTION: Searches for variable that is passed in X and checks if this value is a leaf or not */
//Left Subtree Search
if (x < currentNode->data)
{
if ((leaf(currentNode)) == true)
{
return true;
}
else
{
search(currentNode->left, x);
}
}
//Right Subtree Search
else if (x >= currentNode->data)
{
//If node in right subtree is a node check
if ((leaf(currentNode)) == true)
{
return true;
}
else
{
search(currentNode->right, x);
}
}
//Return false if the node is not a leaf
return false;
} //END OF SEARCH FUNCTION
void remove(Node<T>* ¤tNode, const T& x)
{
}
bool leaf(Node<T>* currentNode) const
{
if (currentNode != nullptr)
{
return ((currentNode->left == nullptr && currentNode->right == nullptr) ? true : false);
}
else
{
return true;
}
}
答案 0 :(得分:0)
在你的搜索功能中,你可以在没有看到它们是否为nullptr的情况下依赖于子节点...然后你尝试在不检查null的情况下仍然引用数据元素。
答案 1 :(得分:0)
此外,leaf
函数在currentNode
为nullptr
时返回true,假设nullptr
中search
的检查已解决。这是指向不存在的叶子的指针所需的行为吗?