Я пытаюсь выполнить операцию вставки в Tr ie и операцию чтения для приведенной ниже реализации. У меня возникли проблемы со вставкой. Не думаю, что есть какие-то проблемы с операцией чтения. В моем случае каждый узел Tr ie имеет массив указателей узлов и поле значения. Кроме того, я отмечаю каждую вставку символа, теоретически каждый узел имеет символ верхнего регистра и целочисленное значение. Например: скажем, должны быть добавлены 3 строки: ATAGA , AT C и GAT , чтобы каждый из символов имел значение, которое будет задается переменной « pass » в коде, см. ожидаемый результат для получения более подробной информации.
import java.util.*;
class node{
public int val;
public node ptrs[];
node(){
this.val =0;
ptrs = new node[26];
for (node ptr : ptrs) {
ptr = null;
}
}
}
class Tree{
public node root = new node();
public int pass =0;
void insert(String s) {
node trv = root;
for (int i = 0; i < s.length(); i++) {
if (trv.ptrs[s.charAt(i) - 'A'] == null) {
trv.ptrs[s.charAt(i) - 'A'] = new node();
trv.val = ++pass;
// System.out.println(s.charAt(i)+" val : "+trv.val);
}
trv = trv.ptrs[s.charAt(i) - 'A'];
}
}
private void visit(node trv){
for(int i =0;i<26;i++){
if(trv.ptrs[i]!=null){
System.out.println((char)(i+'A')+" : "+trv.val);
visit(trv.ptrs[i]);
}
}
}
void call(){
this.visit(root);
}
}
public class trie {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Tree t = new Tree();
while (n-- > 0) {
String s = sc.next();
t.insert(s);
}
t.call();
sc.close();
}
}
мой результат:
3
ATAGA
ATC
GAT
A : 7
T : 2
A : 6
G : 4
A : 5
C : 6
G : 7
A : 8
T : 9
ожидаемый результат:
3
ATAGA
ATC
GAT
A : 1
T : 2
A : 3
G : 4
A : 5
C : 6
G : 7
A : 8
T : 9