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

Что такое двоичное дерево поиска (BST)?

Дерево двоичного поиска - это древовидная структура данных, которая разветвляется от родительского узла к его дочерним узлам. Есть несколько свойств, которые делают двоичное дерево поиска немного отличающимся от других типов деревьев:

  1. Каждый узел (родительский узел) может иметь не более 2 дочерних узлов.
  2. Два дочерних узла часто упоминаются как левый дочерний и правый дочерний, где значение левого дочернего элемента всегда меньше, чем у родительского, а правый дочерний элемент всегда больше, чем равно к родителю
  3. Каждый дочерний элемент также должен быть двоичным деревом поиска.

Типы двоичного дерева поиска

Завершить BST

  • Все уровни (кроме, возможно, последнего уровня) максимальное количество дочерних узлов
  • Все узлы на последнем уровне отображаются как можно дальше слева

Полный BST

  • Все нелистовые узлы (узлы на концах) заполнены левым потомком и правым потомком.

Реализация

Типы обхода

Предзаказ

  • Получить рут
  • Пройдите налево
  • Пройдите вправо

Чтобы

  • Пройдите налево
  • Получить рут
  • Пройдите вправо

Пост-заказ

  • Пройдите налево
  • Пройдите вправо
  • Получить рут

Это бинарное дерево поиска, реализованное на JavaScript!

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

Всем большое спасибо за прочитанное! Вы также можете проверить другие мои сообщения о JavaScript в моем профиле.

Основы JavaScript:

Переменная: https://medium.com/@timhancodes0281/basics-of-javascript-variable-3eb6f4f0af18

Типы данных: https://medium.com/@timhancodes0281/basics-of-javascript-data-types-385bab24b51

Основы JavaScript

Прототипное наследование: https://medium.com/javascript-in-plain-english/javascript-fundamental-prototypal-inheritance-9153ab434aae

ES6

Оператор Rest / Spread в JavaScript: https://medium.com/javascript-in-plain-english/rest-spread-operator-in-javascript-2da13aa942fb

Шпаргалка по методам массива: https://medium.com/@timhancodes/javascript-array-methods-cheatsheet-633f761ac250

Структура данных

Что такое стек и очередь?: https://medium.com/javascript-in-plain-english/javascript-what-are-stack-and-queue-79df7af5a566

Сортировка слиянием

Алгоритм сортировки слиянием в JavaScript: https://medium.com/javascript-in-plain-english/javascript-merge-sort-3205891ac060