Обход поиска в ширину VS обход предварительного заказа VS обход поиска в глубину

Для двоичного дерева, является ли обход поиска в ширину (BFS) тем же самым, что и обход предварительного заказа? Меня немного смущают эти два разных типа обходов. Может ли кто-нибудь объяснить мне это? Кроме того, как обход предварительного заказа сравнивается с обходом поиска в глубину (DFS)?

Большое спасибо!


person Liu    schedule 19.03.2019    source источник
comment
Спасибо за ваши усилия по изменению моего вопроса для пользы других пользователей!   -  person Liu    schedule 26.03.2019


Ответы (2)


Нет, обход предварительного заказа на самом деле является формой обхода поиска в глубину (DFS). Существует три различных формы DFS, а именно:

  1. Предзаказ
  2. Чтобы
  3. Пост-заказ

Чтобы доказать, что обход поиска в ширину (BFS) - это не то же самое, что обход предварительного заказа , я покажу встречный пример ниже:

Чтобы было ясно, двоичное дерево - это не то же самое, что двоичное дерево поиска, а именно двоичное дерево может быть определено как:

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

Хорошо, теперь к контрпримеру, возьмем следующее простое двоичное дерево:

пример двоичного дерева счетчика

Для предварительного заказа узлы посещаются в следующем порядке: Предварительный заказ: [1,2,4,3]

теперь для обхода поиска в ширину узлы посещаются в следующем порядке:

BFS: [1,2,3,4]

Примечание. Обход предварительного заказа отличается от обхода BFS.

Дополнительную информацию о различных обходах дерева можно найти по этой ссылке.

Надеюсь, это поможет!

person Nathan    schedule 19.03.2019
comment
Отличный ответ. Вдобавок кое-что, что может помочь визуализировать разницу, заключается в том, что поиск по предварительному заказу обычно реализуется с использованием структуры данных Stack, в то время как BFS обычно использует Queue. Это связано с тем, что BFS отдает приоритет соседним узлам, в то время как предварительный заказ DFS отдает приоритет дочерним узлам. - person ifiore; 19.03.2019
comment
@ifiore Спасибо, да, вы правы :) DFS использует стек, а BFS использует очередь для своих базовых реализаций. - person Nathan; 19.03.2019
comment
Спасибо! Но я не осознавал, что неправильно понял вопрос, пока не прочитал ваши ответы. Мои правильные вопросы: DFT - это то же самое, что ход предварительного заказа? - person Liu; 19.03.2019
comment
Да, обход предварительного заказа - это форма поиска в глубину. Я тоже включил это в свой ответ. - person Nathan; 19.03.2019

Результаты предварительного заказа и BFS одинаковы в двоичном дереве поиска, но не в простом двоичном дереве.

person UNREAL    schedule 14.03.2021