[TRIE数据结构在c ++中的实现

问题描述 投票:0回答:1

我已经编写了一个简单的代码来在c ++中实现trie数据结构。但是,当我运行该程序时,它会给出细分错误作为输出。请纠正我,我错了。

#include <bits/stdc++.h> 
using namespace std; 

struct trienode {
    struct trienode * child[26];
    bool isEnd;

    trienode()
    {
        isEnd = false;
        for(int i = 0; i < 26; i++)
        {
            child[i] = NULL;
        }
    }
};

struct trienode * root;

void insert_str(string &s, int n)
{
    trienode * curr = root;
    int i;
    for(i = 0; i < n; i++)
    {
        int index = s[i] - 'a';
        if(curr -> child[index] == NULL)
        {
            curr -> child[index] = new trienode();
        }
        else
        {
            curr = curr -> child[index];
        }
    }

    curr -> isEnd = true;
}

int main()
{
    string s1 = "yash";
    insert_str(s1, 4);
}
c++ data-structures trie
1个回答
0
投票

您尚未为根节点分配任何内存。

通常,您将有一个单独的类来处理整个Trie

class trie
{
public:
    trie()
    {
        root = new trienode();
    }
    void insert_str(string &s, int n)
    {
        ...
    }
private:
    trienode* root;
};

int main()
{
    trie t;
    string s1 = "yash";
    t.insert_str(s1, 4);
}
© www.soinside.com 2019 - 2024. All rights reserved.