【问题标题】:How can I add a linkedlist to a trie leaf?如何将链表添加到特里叶?
【发布时间】:2022-01-10 19:29:38
【问题描述】:

我在 java 中有一个字典项目。它将单词添加到 trie 树,然后我需要在我输入的每个单词的末尾添加一个 linkedlist 以保存含义。我为 trie 和链表制作了两种节点,如下所示。

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

26 个字母的 29 个链接和一个指向父级和空格 ' ' 的链接和一个指向列表的链接;

【问题讨论】:

    标签: java list dictionary linked-list trie


    【解决方案1】:

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

    26 个字母的 29 个链接和一个指向父级和空格 ' ' 的链接以及一个指向列表的链接;

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

    TrieNode[]children=new TrieNode[29];
    

    但是您想使用Meaningnode 的条目而不是TrieNode。那是不对的。相反,只需为此目的专用一个单独的属性,就像您已经为isEnd 拥有一个单独的属性一样。我什至也会为父母单独输入一个条目(如果你真的需要父母参考)。

    最后,为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...
        // ...
    }
    

    【讨论】:

    • 谢谢你,先生,我刚刚意识到昨晚在床上,我这样做只是在你的密码上。而且我还发现对于父母我应该做这样的事情。?
    【解决方案2】:
    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;
            }
        }
    

    我知道它还没有完成,只是因为项目我让它变成这样并且我修复它。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2013-09-30
    • 2013-02-23
    • 2016-07-01
    • 2017-07-07
    相关资源
    最近更新 更多