Lab / Data Science / Основы

Основы: Что такое деревья, как они используются в реальных проектах

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

Узел дерева обычно имеет следующие свойства:

Пример реального дерева - файловая система, где каталоги являются узлами с детьми (подкаталоги и файлы), а файлы - листовыми узлами (узлами без детей).

В JavaScript например можно создавать деревья с помощью объектов или ассоциативных массивов. Ключ в объекте или ассоциативном массиве представляет значение узла, а соответствующее значение - это массив или объект, содержащий дочерние узлы. Чаще всего такие струкруты содержатся при хранении в базе данных, где узлы это соединяющие реляционные таблицы, а листья это значения в ячейках таблицы. В не реляционных базах, например MongoDB деревьями могут быть вложенные обьекты с различной структурой.

Вот пример простой структуры дерева каталога на JavaScript с использованием объектов и вложенности:

const catalog = {
  name: "Catalog",
  [
    {
      name: "Category 1",
      children: [
        {
          name: "Subcategory 1",
          children: [
            {
              name: "Product 1",
              price: 10.99,
              description: "This is a product"
            },
            {
              name: "Product 2",
              price: 15.99,
              description: "This is another product"
            }
          ]
        },
        {
          name: "Subcategory 2",
          children: [
            {
              name: "Product 3",
              price: 20.99,
              description: "Yet another product"
            }
          ]
        }
      ]
    },
    {
      name: "Category 2",
      children: [
        {
          name: "Subcategory 3",
          children: [
            {
              name: "Product 4",
              price: 5.99,
              description: "One more product"
            }
          ]
        }
      ]
    }
  ]
};

Деревья полезны в различных сценариях, например:

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

Например, если пользователь A подписан на пользователей B и C, то мы можем представить это в виде дерева, где узел A имеет два дочерних узла, соответствующих пользователям B и C.

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

Data Tree