如何将链表添加到树叶中?

How can I add a linkedlist to a trie leaf?

我在 java.it 中有一个字典项目将单词添加到特里树然后我需要在每个单词的末尾添加一个 linkedlist我输入那个保存意义。我已经为 trie 和 linked 列表制作了两种节点,例如波纹管。

static class TrieNode{
        TrieNode[]children=new TrieNode[29];
        boolean IsEnd;
        TrieNode(){
            IsEnd=false;
            for(int i=0;i<29;i++)
                children[i]=null;
        }
    }
    static class Meaningnode{
        String Meaning;
        Meaningnode next;
        public Meaningnode(String Meaning){
            this.Meaning=Meaning;
        }
    }

29 links 表示 26 个字母和一个 link 到父级和 space ' ' 和一个到列表;

在您对 29 个条目的解释中,您写道:

29 links for 26 letters and a link to parent and space' ' and a one to the list;

这里的问题是“列表中的一个”会违反预期的类型。声明为:

TrieNode[]children=new TrieNode[29];

但是您想使用 Meaningnode 而不是 TrieNode 的条目。那是不对的。相反,只需为此目的专门使用一个单独的 属性,就像您已经为 isEnd 设置了一个单独的 属性 一样。我什至会为 parent 做一个单独的条目(如果你真的需要 parent 参考)。

最后,为 Meaningnode 添加一个构造函数,它可以使用第二个参数来指定 next:

static class Meaningnode {
    String Meaning;
    Meaningnode next;

    public Meaningnode(String Meaning) {
        this.Meaning = Meaning;
    }

    public Meaningnode(String Meaning, Meaningnode next) {
        this.Meaning = Meaning;
        this.next = next;
    }
}


static class TrieNode {
    TrieNode[] children = new TrieNode[27];
    boolean IsEnd;
    TrieNode parent;
    Meaningnode meaning;

    TrieNode() {
        IsEnd = false;
        parent = null;
        meaning = null;
        for (int i = 0; i < 27; i++)
            children[i] = null;
    }

    // Method to prepend a meaning to the list of meanings:
    addMeaning(string meaning) {
        this.meaning = new Meaningnode(meaning, this.meaning);
    }
    
    // Other methods...
    // ...
}
static class Node{
        String mean;
        Node next;
        Node(String s){
            mean=s;
            next=null;
        }
    }
static class TrieNode{
        TrieNode[]children=new TrieNode[29];
        boolean IsEnd;
        Meanings_Linked_List list=new Meanings_Linked_List();
        TrieNode(){
            IsEnd=false;
            for(int i=0;i<29;i++)
                children[i]=null;
        }
    }

而且我知道它还没有完成只是因为项目我让它像这样并且我无法修复它。