如何找到二叉树的叶子?

时间:2014-03-31 00:51:17

标签: c++ pointers search recursion binary-tree

我正在编写一个带搜索功能的二叉树。该函数应该采用参数x来表示要搜索的值,一旦找到它,确定它是否是叶子。如果未找到该值,则搜索函数将返回false。

这就是我所拥有的一个错误,它给了我一个从1到100的每个值的错误回报。二叉树被初始化为100个值。

bool search(Node<T>* &currentNode, 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>* &currentNode, const T& x)
{

}

bool leaf(Node<T>* currentNode) const 
{
    if (currentNode != nullptr)
    {
    return ((currentNode->left == nullptr && currentNode->right == nullptr) ? true : false);        
    }
    else 
    {
        return true;
    }
}

2 个答案:

答案 0 :(得分:0)

在你的搜索功能中,你可以在没有看到它们是否为nullptr的情况下依赖于子节点...然后你尝试在不检查null的情况下仍然引用数据元素。

答案 1 :(得分:0)

此外,leaf函数在currentNodenullptr时返回true,假设nullptrsearch的检查已解决。这是指向不存在的叶子的指针所需的行为吗?