ВНИМАНИЕ Для заказа программы на двоичное дерево поиска пишите на мой электронный адрес proglabs@mail.ru

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

На рисунке ниже приведен пример такого двоичного дерева поиска со всеми связями.

бинарное дерево поиска

На этом рисунке есть стрелочки, указывающие на горизонтальную линию — так в теории деревьев допустимо обозначать указатель на NULL ( NIL, nullptr и т.п. ).

указатель на NULL

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

  • место для хранения данных (данные в том числе включают и ключ);
  • указатель на левое поддерево;
  • указатель на правое поддерево;

💡 Так как мы рассматриваем «бинарку», построенную на базе целых чисел, то ключом выступают и сами данные, то есть ключ и данные выражают одно и то же — целое число. Когда данные являются комплексными/составными, то имеет место разделение, собственно на сами данные и на ключевое значение.

схематичное представление узла бинарного дерева

Кстати, в английском языке слово «узел» пишется как «node», следовательно, опишем на языке программирования Си тип данных, который характеризует узел двоичного дерева поиска:

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

Хочется отметить еще такой момент, что в редких случаях орудуют двоичным деревом поиска, узлы которого имеют связь со своим предком/родителем ( рисунок ниже ).

схематичное представление узла бинарного дерева, имеющего связь с родительским узлом

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

➡ Также указатель на своего предка полезен, когда происходит балансировка дерева, но в этом случае правильнее упоминать AVL-дерево.

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

ВНИМАНИЕ Для заказа программы на двоичное дерево поиска пишите на мой электронный адрес proglabs@mail.ru