Здесь мы обсудим алгоритм реализации поиска в глубину.

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

Для определения дерева первым узлом является корневой узел (т. е. a).

Левый или правый дочерний элемент может быть узлом, поддеревом или нулевым значением.

Если узел не содержит ни левого, ни правого дочернего элемента, он называется конечным узлом (т. е. d, e, f, g).

Чтобы определить узел, мы будем использовать класс JavaScript.

При определении узла хранится только значение. левый и правый потомки равны нулю.

Здесь мы создали отдельные узлы.

Здесь мы создали дерево, как показано на Рис. 1.

Итак, мы создали дерево и теперь перейдем к алгоритму.

Таким образом, существует два основных метода определения алгоритма DFS:

  1. Итерационный метод
  2. Рекурсивный метод

Итеративный метод

В итеративном методе в качестве структуры данных используется стек, поскольку он работает по принципу LIFO.

LIFO – это сокращение от слова последним пришел, первым ушел. Это метод обработки структур данных, при котором первый элемент обрабатывается последним, а последний элемент обрабатывается первым.

  1. Мы начнем с предоставления корневого узла, с которого начинается обход.
  2. Стек проверяется до тех пор, пока он не станет полностью пустым.
  3. Пометить последний добавленный узел как текущий узел и поместить значение в массив результатов.
  4. Если у текущего есть правильный потомок, то будет пройдено правое поддерево.
  5. Если у текущего есть левый дочерний элемент, то будет пройдено левое поддерево.

Примечание. Хотя вывод может измениться, если сначала вызвать левое поддерево, а затем правое поддерево, оба варианта останутся действительными.

например. Вывод с текущим подходом: [a, b, d, e, c, f, g]

если мы изменим порядок: [a, c, g, f, b, e, d]

Рекурсивный метод

  1. Базовое условие, когда узел не имеет левого и правого дочерних элементов.
  2. Мы инициализируем его пустым массивом, просматриваем левое и правое поддерево и добавляем результат в массив.
  3. В результате значение узла, левый подмассив и правый подмассив будут объединены.


Ознакомьтесь с частью 1, чтобы лучше понять DFS.