使用三元搜索树预测文本

时间:2015-02-08 06:44:52

标签: java algorithm tree

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

我有一个大约400k字的字典。目前我正在尝试将所有内容存储在TST中并使用该数据结构。我遇到麻烦的是TST使用密钥的事实。我能够编写一个使用键和值的terrenary搜索树,它似乎工作,但我不知道我应该使用什么来为我的程序的键。或者是否可以使用更好/更容易的数据结构?我试图不要使用大量内存。

到目前为止,这是我对Node类的插入和插入。

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;
    }

2 个答案:

答案 0 :(得分:0)

对于beter数据结构,您应该考虑使用trie。它也被称为前缀树,在这种情况下它是一个更合适的名称。可以找到实现此目的的可能方法here

答案 1 :(得分:0)

IMO你不需要钥匙。你能告诉我一个参考。我也使用TST作为快速模式匹配的例子。