Home > Mobile >  How can I add a linkedlist to a trie leaf?
How can I add a linkedlist to a trie leaf?

Time:01-13

I have a dictionary project in java.it adds words to a trie tree and then I need to add a linkedlist to end of each word I entered that saves meanings. I have made two kind of nodes like bellow for the trie and linked list.

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 for 26 letters and a link to parent and space ' ' and a one to the list;

CodePudding user response:

In your explanation for 29 entries, you write:

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

The problem here is that the "one to the list" will violate the type that is expected. The declaration is:

TrieNode[]children=new TrieNode[29];

But you want to use an entry for a Meaningnode instead of a TrieNode. That is not right. Instead, just dedicate a separate property for that purpose, just like you have already a separate property for isEnd. I would even make a separate entry for the parent too (if you really need a parent reference).

Finally, add a constructor for Meaningnode that can take a second argument for specifying 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...
    // ...
}

CodePudding user response:

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

and i know its not complete yet just because of project i let it to be like this and ill fix it.

  •  Tags:  
  • Related