Как функция next() работает в структуре данных Tries?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как функция next() работает в структуре данных Tries?

Сообщение Anonymous »

Я смотрел на структуру данных Trie (я нашел ее, решая задачу с лит-кодом.
В любом случае, насколько я понял, в Trie мы храним символы слова похожим образом. к дереву, и мы перемещаемся от корня к концу слова.
Чтобы вставить узел, используется эта функция:

public void put(char c, Node node) {
links[c - 'a'] = node;
}


Теперь, чтобы перейти от одного узла к другому, т.е. от одного символа к другому, мы используем функцию next,
public Node next(char c) {
return links[c - 'a'];
}

Теперь мой вопрос: не являются ли «ссылки», которые мы возвращаем в next(), теми же самыми, которые мы только что вставили? Как он стал следующим узлом?
То есть в функции put() мы используем параметры 'char c и Node node' и вставляем узел в массив Узлов (ссылки ) мы сделали в начале. Теперь, когда мы вызываем функцию next(), разве мы не просто возвращаем узел вставленного нами символа??
Полная реализация приведена ниже:
(Все приведенный код написан на Java)
class Node {

private Node[] links = new Node[26];

// Check if the character is present in the current node
public boolean contains(char c) {
return links[c - 'a'] != null;
}

// Insert a new node for the character
public void put(char c, Node node) {
links[c - 'a'] = node;
}

// Get the next node for the character
public Node next(char c) {
return links[c - 'a'];
}
}

class Trie {

private Node root;

public Trie() {
root = new Node();
}

// Insert a word into the Trie
public void insert(String word) {
Node node = root;
for (char c : word.toCharArray()) {
if (!node.contains(c)) {
node.put(c, new Node());
}
node = node.next(c);
}
}

// Check if the Trie contains a given prefix
public boolean startsWith(String prefix) {
Node node = root;
for (char c : prefix.toCharArray()) {
if (!node.contains(c)) {
return false;
}
node = node.next(c);
}
return true;
}
}



Подробнее здесь: https://stackoverflow.com/questions/793 ... -structure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»