2009-03-26 3 views

ответ

12

Ну, дерево - это особый тип графа, называемый направленным ациклическим графом, поэтому да ... Широта Первый и Глубина Первый обход работает как дерево.

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

Достаточно сказать, что единственная разница между шириной и глубиной первого обхода - это порядок, в котором вы обрабатываете вершины. Ширина, которую вы можете представить себе как добавление вершин в очередь «для обработки». Глубина сначала вы можете представить как добавление вершин в «готовый» стек. Когда приходит время обрабатывать вершины (после того, как они добавлены в соответствующие структуры данных), вы удаляете или выкладываете стек, чтобы получить следующую вершину для обработки. Умные версии первого обхода глубины используют рекурсию для обработки вершин вместо их добавления в стек.

Я понятия не имею, был ли полезен или нет ...

Быстрый поиск Google (я не знаю, было ли это ширина или глубина первой) находит this, который, кажется, довольно хорошо описывая различия между BFS и DFS. Я также могу рекомендовать Steve Skiena The Algorithm Design Manual, если вы хотите получить более глубокое чтение.

+0

благодарит за ответ! Но можете ли вы немного расширить его, чтобы показать разницу между BF и DF? –

+0

Разве дерево не направлено? –

+0

@DominikAntal Дерево одноразовое. Узлы имеют ссылки только на своих детей, а не на дочерние узлы на родительский узел. – cbradsh1

2

Функция, которая может пересекать общий граф, может быть чрезмерной для прохождения дерева, потому что в чистом дереве вам не нужно проверять циклы. Так что это сработает, но так будет проще.

+0

LOL. Я склонен думать об этом по-другому: графики - это проблема, потому что они могут содержать циклы. – dmckee

+0

Действительно - платит за то, чтобы эти два тесно связаны в вашем уме, потому что люди очень часто начинают с дерева, а затем вводят что-то похожее на символические ссылки, как в файловой системе Unix, и вдруг у вас есть граф вместо true tree, и ваши рекурсивные алгоритмы взорвутся. –

Смежные вопросы