Как найти узел в дереве по заданному пути

У меня есть TreeModel в Java, и мне дали путь, чтобы найти, чтобы проверить, существует ли путь. Например, /dir1/dir2/dir3/ - это существующий путь в моем дереве. Мое дерево не двоичное. Как бы я подошел к этому? Моя идея состояла в том, чтобы функция взяла DefaultMutableTreeNode, а затем проверила, имеет ли узел то же имя, что и первый каталог в моем пути, и так далее для остальных каталогов. Моя проблема заключается в том, как рекурсивно перейти к следующей строке и следующему узлу. Должна ли моя функция быть рекурсивной, итеративной и т. Д. Любая помощь будет отличной! Заранее спасибо.

2 ответа

Предполагая, что у вас есть типичное дерево, где каждый элемент вашего пути является ключом к следующему узлу, что-то вроде этого должно работать при вызове на корневом узле:

public boolean hasPath(String path) {
    Node node = this;
    for (String key : path.split("/")) {
        node = node.get(key);
        if (node == null)
            return false;
    }
    return true;
}

Это итеративно и поэтому легче понять, чем идти по кроличьей норе рекурсии. Это также более эффективно.

Вы можете сделать это Сохранить и обработать все дочерние узлы из корня в стек. Затем начните извлекать каждый дочерний узел и делать то же самое с ним рекурсивно.

Другие вопросы по тегам