【问题标题】:Searching for substring in a Binary Search Tree of strings - C++在字符串的二进制搜索树中搜索子字符串 - C++
【发布时间】:2020-09-27 05:09:15
【问题描述】:

我已将一串日期插入到我的二进制搜索树中。现在,当用户输入年份时,我想检查 BST 中我的日期中是否存在这一年,如果存在,我会执行一些操作。问题是我的 BST 的 searchTree 方法返回一个布尔值,所以我不确定如何在我的 BST 中搜索子字符串,或者是否有可能。 我搜索子字符串是因为我不需要日期或月份。我只需要检查今年是否存在于我的 BST 中。有什么建议吗?

到目前为止我做了什么:

    Bst<string> dateStrings;
    multimap<Date, float> mapOption2;

    for(int i = 1; i < SIZE; i++)
    {
        stringstream converter;
        string convertedDate;

        converter << windlog[i].d;

        converter >> convertedDate;
        //cout << "After conversion: " << convertedDate << endl;

        dateStrings.insertNodeRecursive(convertedDate);
        mapOption2.insert(make_pair(windlog[i].d, windlog[i].temp.GetTemperature()));

    }

if(dateStrings.searchTreeRecursive(strcmp)) // This is where I am stuck.

我的搜索树方法返回一个布尔值,它的参数只是意味着是任何类型的变量,在这种情况下它应该是一个字符串。

【问题讨论】:

    标签: c++ string search binary-tree


    【解决方案1】:

    您可以创建一对 int 和 string,其中 int 将是您的年份编号,而 string 将是您的日期字符串。创建每对后,将完整的对插入 BST。因此,现在当一年作为函数的输入时,您可以发现该年份是否存在于包含每个节点的 BST 中。

    【讨论】:

    • 所以我的配对应该是这样的吗? 2014 年,2014 年 16 月 4 日?如何创建对以存储到 BST 中?我不熟悉这个概念,也无法在线找到合适的解决方案
    • 您可以使用 std::map 插入您的配对。 STL 中的 map 在内部实现为红黑树,它们是自平衡二叉搜索树。参考官方文档:en.cppreference.com/w/cpp/container/map
    猜你喜欢
    • 2017-04-17
    • 2023-03-24
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多