Ну, дерево - это просто особый тип графа, называемый ориентированным ациклическим графом, так что да ... Обход шириной вначале и глубиной в первую очередь работают на дереве.
Я мог бы написать подробное объяснение различий между шириной и глубиной первого прохождения, но я, вероятно, ошибся (я еще не большой специалист по компьютерным технологиям).
Достаточно сказать, что единственная разница между шириной и глубиной первого обхода - это порядок, в котором вы обрабатываете вершины. Вначале под широтой понимается добавление вершин в очередь «для обработки». Глубину сначала можно представить как добавление вершин в стек «для обработки». Когда приходит время обрабатывать вершины (после того, как они были добавлены в соответствующие структуры данных), вы удаляете из очереди или извлекаете стек, чтобы получить следующую вершину для обработки. Умные версии первого обхода глубины используют рекурсию для обработки вершин вместо добавления их в стек.
Понятия не имею, было ли это полезно или нет ...
Быстрый поиск в Google (я не знаю, был ли он первым по ширине или глубине) находит этот , который довольно неплохо описывает различия между BFS и DFS. Я также могу порекомендовать Стиву Скиене Руководство по разработке алгоритма , если вы хотите получить более подробное прочтение.