ВНИМАНИЕ | Для заказа программы на двоичное дерево поиска пишите на мой электронный адрес proglabs@mail.ru |
Чтобы ответить на этот вопрос, давайте посмотрим на среднестатистическое бинарное дерево поиска.
Используя связи, есть возможность добраться до любой вершины дерева, начав движения от корня. Рассмотрим траекторию движения от корня до узла с ключом $41$.
💡 Траектория имеет такую форму: влево — вправо — вправо — влево.
Поэтому для всех операций необходимо иметь указатель на корень дерева, то есть на самый верхний элемент ( на рисунках выше ключом корня является число $55$ ). Данный элемент является предком (прямым или косвенным) для всех узлов двоичного дерева поиска.
Поэтому в программном коде придется добавить переменную-указатель на вершину двоичного дерева поиска:
1 |
Node* root; |
Напомню, что из себя представляет структура Node:
1 2 3 4 5 6 7 8 9 10 11 |
// описание структуры узла бинарного дерева поиска typedef struct Node { int key; // ключевое значение узла struct Node* left; // указатель на левое поддерево struct Node* right; // указатель на правое поддерево } Node; // хороший стиль программирование "требует" исключения висячих указателей // по этой причине указатель на вершину дерева стоит занулить Node* root = NULL; |
То есть переменная-указатель root — это необходимая переменная для любой обработки поискового дерева, но для ряда вспомогательных операций одной переменной root будет явно недостаточно.
Например, если будет запущен поиск/удаление узла бинарного дерева по ключу, то помимо указателя на вершину дерева необходимо еще передать переменную, которая выражает ключевое значение искомого/удаляемого узла .
ВНИМАНИЕ | Для заказа программы на двоичное дерево поиска пишите на мой электронный адрес proglabs@mail.ru |
Добавить комментарий