Прослеживается ли предварительный порядок на двоичном дереве так же, как и поиск глубины первого?

Мне кажется, что предварительный обход и DFS такие же, как и в тех случаях, когда мы проходим до листа node глубже. Может ли кто-нибудь исправить меня, если я ошибаюсь?

Спасибо заранее!

Ответ 1

Предварительный заказ - это один тип DFS.

Существует три типа обхода глубины: предварительный заказ, порядок и пост-порядок.

Обратитесь здесь для получения дополнительной информации.

Ответ 2

Это, вероятно, зависит от определения и реализации глубины алгоритм. DefaultMutableTreeNode класс Java Swing JTree Компонент имеет следующие методы перечисления, используемые для обхода дерева:

  • depthFirstEnumeration()
  • postorderEnumeration()
  • preorderEnumeration()
  • breadthFirstEnumeration()

В реализации Java Swing depthFirstEnumeration является тем же как postOrderEnumeration. Мои тесты и официальная документация подтверждает это.

Другие могут по-разному определять, что означает глубина. Например, статья в Википедии говорится, что предзаказ и обход после заказа являются конкретными типами прохождения в глубину. Это будет означать, что глубинный обход не конкретный алгоритм обхода.

Ответ 3

Это не будет. Предзаказ имеет строгий способ посещения левого node, а затем правого node. Но для DFS это может быть либо, как нет строгой моды. Таким образом, существует более одного обхода, основанного на том, что вы нажимаете на стек.

Ответ 4

Интуитивно, они чувствуют то же самое из-за того, как мы применяем алгоритм DFS с использованием рекурсии (то есть используя неявную структуру данных стека) в большинстве реализаций. В большинстве случаев (или во всех) результаты такие же, как и при обходе предварительного заказа.

Идея DFS - выбрать ветку и углубиться в эту, полностью ее изучить. Принимая во внимание, что способ выбора ветки и ее отключения определяется тем, какой тип DFS вы реализуете. Просто ради завершения, в алгоритме BFS мы проходим по уровням.

Помните, предварительный заказ - это просто тип DFS. У нас также есть другие методы, которые показаны ниже.

notes on dfs

Источник изображения: Базовая CS

Для лучшего понимания см. этот блог или даже этот.