Încerc să implementez un trie foarte simplu în Java care admite 3 operațiuni. Aș dori să am o metodă de introducere, o metodă are (adică un cuvânt determinat în trie) și o metodă de tosting pentru a returna tria în formă de lanț. Cred că inserția funcționează corect, dar are și tostring sunt dificil. Aceasta este ceea ce am până acum. Trie
Clasa Trie.
iv id = „243b9406a0”
și nodul de clasă
public class TrieNode { //make child nodes private TrieNode c; //flag for end of word private boolean flag = false; public TrieNode() { c = new TrieNode; //1 for each letter in alphabet } protected void insert(String word) { int val = word.charAt(0) - 64; //if the value of the child node at val is null, make a new node //there to represent the letter if (c == null) { c = new TrieNode(); } //if word length > 1, then word is not finished being added. //otherwise, set the flag to true so we know a word ends there. if (word.length() > 1) { c.insert(word.substring(1)); } else { c.flag = true; } } public boolean has(String word) { int val = word.charAt(0) - 64; if (c!=null && word.length()>1) { c.has(word.substring(1)); } else if (c.flag==true && word.length()==1) { return true; } return false; } public String toString() { return ""; } }
astfel, în principiu, atunci când creați un trie, un trineod este creat ca rădăcină cu 26 de copii. Când încercați să introduceți, este invocată acelui nod rădăcină, care creează recursiv un nou nod în poziția corectă și continuă până când cuvântul este complet. Cred că această metodă funcționează corect.
Funcția mea este foarte ruptă, pentru că trebuie să am acea declarație de întoarcere în afara parantezelor din anumite motive. Nu pot să o contin în interiorul unei clauze sau compilatorul se plânge. În afară de aceasta, mă gândesc că metoda ar trebui să funcționeze cu unele ajustări, dar nu pot rezolva din cauza vieții mele.
Toting este o fiară pe care am încercat să o adresez, dar nimic din ceea ce este nimic aruncă lucrări, deci ce plec până se rezolvă problema. Dacă am funcții, pot găsi o modalitate de a reforma într-o funcție de tosting.
Scopul INT Val = Word.charat (0) – 64; Se datorează faptului că fiecare lanț admis trebuie să fie majuscule (voi crea o funcție de formatare a șirului pentru a vă asigura acest lucru) astfel încât valoarea INT a primei litere – 64 să fie poziția sa în matrice. Aceasta este, viteza de matrice 0 este A, apoi A = 64, A – 64 = 0. B = 65, B – 64 = 1 și așa mai departe.