Что такое бинарное дерево

Ответ

Бинарное дерево — это иерархическая структура данных, состоящая из узлов, где каждый узел имеет не более двух потомков: левого и правого.

Основные термины:

  • Корень (Root): Самый верхний узел дерева, не имеющий предков.
  • Потомок (Child): Узел, непосредственно связанный с другим узлом (предком) на более низком уровне.
  • Предок (Parent): Узел, имеющий потомков.
  • Лист (Leaf): Узел, не имеющий потомков.
  • Высота (Height): Длина самого длинного пути от корня до листа.

Ключевые свойства и типы:

  • Каждый узел содержит значение (ключ) и ссылки на левого и/или правого потомка.
  • Бинарное дерево поиска (BST): Особый тип бинарного дерева, где для каждого узла все значения в его левом поддереве меньше значения узла, а все значения в правом поддереве — больше. Это свойство позволяет эффективно искать, вставлять и удалять элементы.

Почему используется: Бинарные деревья обеспечивают эффективные операции поиска, вставки и удаления данных, особенно в случае сбалансированных деревьев, где время выполнения этих операций составляет O(log n).

Пример структуры узла на Python:

class Node:
    def __init__(self, key):
        self.left = None   # Ссылка на левого потомка
        self.right = None  # Ссылка на правого потомка
        self.val = key     # Значение узла

# Создание простого бинарного дерева
root = Node(10)
root.left = Node(5)
root.right = Node(15)
root.left.left = Node(2)
root.left.right = Node(7) # Добавим еще один узел для наглядности

Применение:

  • Сортировка и поиск данных: В бинарных деревьях поиска (BST) элементы хранятся в отсортированном порядке.
  • Синтаксические деревья: Используются в компиляторах для представления структуры кода.
  • Системы баз данных: Для индексации данных.
  • Приоритетные очереди: С помощью бинарных куч (heap), которые являются частным случаем бинарного дерева.