Java 三元搜索树在预测文本中的应用

Java 三元搜索树在预测文本中的应用,java,algorithm,tree,Java,Algorithm,Tree,我正在尝试编写一个程序,当用户开始在搜索栏中键入一个单词时,该程序将显示用户可能要键入的单词列表 我有一本大约40万字的字典。目前,我正在尝试将所有内容存储在TST中,并使用该数据结构。我遇到的问题是,TST使用钥匙。我能够编写一个使用键和值的terrenary搜索树,它似乎可以工作,但我不知道我的程序应该使用什么键。或者是否有更好/更简单的数据结构可用于此程序?我尽量不使用太多的记忆 到目前为止,这就是我为Node类和insert所做的 private Node root; priva

我正在尝试编写一个程序,当用户开始在搜索栏中键入一个单词时,该程序将显示用户可能要键入的单词列表

我有一本大约40万字的字典。目前,我正在尝试将所有内容存储在TST中,并使用该数据结构。我遇到的问题是,TST使用钥匙。我能够编写一个使用键和值的terrenary搜索树,它似乎可以工作,但我不知道我的程序应该使用什么键。或者是否有更好/更简单的数据结构可用于此程序?我尽量不使用太多的记忆

到目前为止,这就是我为Node类和insert所做的

private Node root;
    private class Node
    {
        char c;
        Node left, mid, right;
        Value val;
    }

public void put(String key, Value val)
    {
        root = put(root, key, val, 0);
    }

    private Node put(Node x, String key, Value val, int d)
    {
        char c = key.charAt(d);
        if(x== null)
        {
            x = new Node();
            x.c = c;
        }
        if(c < x.c)
            x.left = put(x.left, key, val, d);
        else if( c > x.c)
            x.right = put(x.right, key, val , d);
        else if (d < key.length () -1)
            x.mid = put(x.mid, key, val, d+1);
        else
            x.val = val;
        return x;
    }
私有节点根;
私有类节点
{
字符c;
左、中、右淋巴结;
价值增值;
}
公共void put(字符串键,值val)
{
root=put(root,key,val,0);
}
专用节点put(节点x、字符串键、值val、int d)
{
字符c=键字符(d);
如果(x==null)
{
x=新节点();
x、 c=c;
}
if(cx.c),则为else
x、 右=放置(x.右,键,值,d);
else if(d对于一个更好的数据结构,您应该考虑使用A。它也被称为前缀树,在这个上下文中是一个更合适的名称。可以找到一种可能的实现方法。

在我看来,您不需要密钥。你能给我看一份推荐信吗。例如,我还使用TST进行快速模式匹配。

似乎您的键就是字符串,您没有任何东西可以用作值?是的,我不确定值使用什么。我在想,把那部分剪掉,然后用钥匙。我应该得到同样的结果,对吗?我最初使用了Trie。但是Trie会占用大量内存,对于我的项目,我的内存不足。TST基本上应该是一个Trie,但使用的内存较少。