Я смотрел на структуру данных 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
Как функция next() работает в структуре данных Tries? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1736322802
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;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79338313/how-does-the-next-function-work-in-the-tries-data-structure[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия