Пройдя через Три - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь пройтись по предварительному заказу в Java. Мне нужно сделать несколько операций, если я нашел лист. Я называю метод с корнем дерева и пустой строкой "", который я могу использовать в рекурсии. Я сохранил строку в каждом узле и помечаю слова как лист. Например, «the» можно найти через следующие узлы: «» -> «t» -> «th» -> «the». Вот что у меня так далеко:

void traverse(TrieNode current, String prefix){
  for (TrieNode temp : current.getChildren()) {
                if (temp == null) continue;
                String s = temp.getKey();
                traverse(temp, s);
                if (temp.getIsLeaf()) {
                   //do operations
                }
   }
}

Может кто-нибудь помочь мне найти рабочее решение?

1 Ответ

0 голосов
/ 02 мая 2019

Предварительный заказ означает, что вы сначала посещаете корень, а затем детей. Я не понял, как вы используете String prefix (в любом случае оно доступно через current.getKey())

void traverse(TrieNode current, String prefix){
  // do what you need with the key...
  String currentValue = current.getKey();
  // do what you need if leaf
  if (current.getIsLeaf()) {
    // do operations
  }
  for (TrieNode temp : current.getChildren()) {
      traverse(temp);
   }
}
...