从二进制搜索树C ++返回引用

草图大师

在我的二进制搜索树中考虑以下搜索功能。

template <class elemType>
elemType& BSTree<elemType>::search(const elemType & searchItem) const
{
    std::cout << "in 1st teir search" << std::endl;
    if (root == NULL)
    {
        std::cout << "Tree is empty, and there for no data will be in this tree." << std::endl;
    }
    else
    {
        std::cout << "Entering 2nd teir search" << std::endl;
        return search(root, searchItem);
    } //End else
} //End search(1param)

template <class elemType>
elemType& BSTree<elemType>::search(nodeType<elemType>* node, const elemType& dataToFind) const
{
    elemType found;

    if (node == NULL)
    {
        std::cout << "Not found. Node is null." << std::endl;
    }
    else
    {
        if (node->data == dataToFind)
        {
            std::cout << "Data found" << std::endl;
            found = node->data;
        }
        else if (node->data < dataToFind)
        {
            std::cout << "Data not found, searching to the RIGHT" << std::endl;
            found = search(node->rLink, dataToFind);
        }
        else
        {
            std::cout << "Data not found, searching to the LEFT" << std::endl;
            found = search(node->lLink, dataToFind);
        }
    } //End else
    return found;
} //End search(2param)

每当我访问/搜索非根数据时,我去分配该数据时程序就会崩溃。

我想念什么?

注意:请理解,也许我可以在遍历中使用函数指针来返回值,但是出于目的,我使用树进行搜索将返回对该对象的引用。

格子呢骆驼

您没有返回对要查找的节点的引用,而是返回了对的引用found,该引用具有自动存储功能,并且在函数退出时将被销毁。

要解决此问题,您可以创建found一个指针,将节点的地址存储在其中,然后return *found;在函数末尾。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果找不到值,则C搜索中的二进制搜索树无法返回消息

二进制搜索树,常量NULL返回

C ++二进制搜索树模板从函数返回Node

二进制搜索始终返回-`

尝试将二进制搜索树转换为数组(返回Null)

具有二进制搜索树的Java返回语句逻辑

二进制搜索树递归返回未定义-Javascript

二进制搜索树算法,该算法返回范围内的值数组

Java二进制搜索树删除递归返回已删除元素

二进制搜索树未返回正确的有序后继

树二进制C / C ++进程返回-1073741819(0xC0000005)

C-二进制树:无法返回正确数目的修剪节点

如何通过引用传递用于二进制搜索的结构C ++

为什么此递归函数对二进制搜索树中的节点进行计数总是返回比预期大的结果?

为什么二进制搜索返回-1

二进制搜索程序返回错误的位置

二进制搜索多次返回错误答案

使用二进制搜索从TreeSet返回元素

在STL中返回索引的二进制搜索?

二进制搜索似乎返回随机结果

从二进制搜索函数中返回值

二进制搜索程序返回不想要的值

Python二进制搜索readline不返回整行

返回对象而不是索引的二进制搜索的实现?

二进制兼容更改返回类型C ++

查找二进制搜索树的所有非叶中存储的数据总和?(一个独立的递归函数,它返回一个整数。)

如何构建二进制树,如果插入成功,则在python中返回True

检查二进制树是否为BST的函数始终返回true

二进制树中的contains-method总是返回false Java