В программировании JavaScript данные могут храниться в структурах данных, такими как графики и деревья. Технически деревья – это графики.
Структуры данных графа
Графики развивались из области математики. Они в основном используются для описания модели, которая показывает маршрут из одного местоположения в другое место.
График состоит из набора узлов и набора краев. Край – это пара узлов, которые подключены. Путь – это термин, используемый для описания движения между узлами, которые разделяют край. Изображение ниже показывает график с 3 узлами и 3 краями.
Структура данных деревьев
Структура данных деревьев, как график, представляет собой коллекцию узлов. Существует корневой узел. Узел может затем иметь детские узлы. Детские узлы могут иметь свои собственные детские узлы, называемые узлами внука.
Это повторяется, пока все данные не будут представлены в структуре данных деревьев. Изображение ниже показывает структуру данных деревьев.
Дерево – это график, который не имеет циклов (цикл, являющийся путем в графе, который начинается и заканчивается на той же вершине). Узел ребенка может иметь только один родитель. По этой причине деревья не являются рекурсивной структурой данных.
Зачем использовать графики и деревья в качестве структур данных?
В компьютерном программировании деревья используются все время, чтобы определить структуры данных. Они также используются в качестве основы для алгоритмов для решения проблем.
Наиболее распространенными реализациями графика находят путь между двумя узлами, находя кратчайший путь от одного узла в другое и найти кратчайший путь, который посещает все узлы.
Проблема для путешествий – отличный пример использования дерева алгоритма для решения проблемы.
Поиск данных
Теперь, когда вы понимаете разницу между двумя структурами данных, я собираюсь показать вам, как вы можете искать свои данные.
Два наиболее распространенные методы поиска графика или дерева – первое поиск и широкий поиск глубины.
Следует ли использовать первый поиск по глубине или в широкий вид первого поиска по типу данных, содержащихся в вашем дереве или структуре данных графика.
Ширина первого поиска
Вот пример дерева, который мы хотим искать, используя широкий поиск.
В ширине первого поиска вы начнете на корневом узле. Затем вы будете искать все свои детские узлы, движущиеся слева направо. Как только все детские узлы были исканы, процесс повторяется на уровне ниже корневого узла.
Этот процесс повторяется на каждом уровне, пока вы не достигнете конца дерева, либо вы не достигнете узла, который вы искали первоначально. Изображение ниже показывает ваш заказ, который вы будете искать дерево в первом поиске широта.
Для реализации первого поиска широта вам нужен какой-то способ отслеживания каких узлов, которые вам нужно для поиска Далее, как только вы завершите поиск на текущем уровне.
Чтобы отслеживать узлы, которые необходимо искать дальше, вы будете использовать очередь в качестве посредника в поисках. Очередь – это FIFO (первый в первом месте) массив.
Чтобы продемонстрировать, как это работает, позвольте мне пройти вас через поиск уровня 1 и уровня 2 на изображении выше.
Первый узел, который будет искать, является корневым узлом или узлом A. Вы бы положите узел A в качестве первого элемента в вашу очередь. Затем вы повторите эти шаги, пока ваша очередь не будет пустой.
- Возьмите первый узел из очереди и посмотрите, соответствует ли он вашим предметом поиска.
- Добавьте все дети узла на временную очередь.
После шага 2 вашего поиска ваша очередь очереди теперь будет держать всех детей узла A.
Теперь сравниваем узел B, чтобы увидеть, соответствует ли он наши результаты поиска. Если это не так, то он удален из очереди, оставляя только узла H. Затем мы добавляем у детей узла b в очередь.
Этот процесс продолжается до тех пор, пока все узлы не будут искать или найдите узел, который соответствует вашим критериям поиска.
Больше статей
Спасибо за чтение моей статьи. Если вам это нравится, пожалуйста, нажмите на значок Clap ниже, чтобы другие найдут статью. Вот несколько моих статей, которые вас могут быть заинтересованы в:
Узорные модели в JavaScript Почему компания культура важна для вашей карьеры в качестве инженера программного обеспечения Использование Node.js & Express.js для сохранения данных в базу данных Mongodb
Оригинал: “https://www.freecodecamp.org/news/breadth-first-search-in-javascript-e655cd824fa4/”