Я хочу преобразовать отсортированный массив целых чисел в двоичное дерево поиска. Я считаю, что понимаю, как это сделать. Я разместил свой псевдокод ниже. Я не могу представить, как работает рекурсия.Преобразование отсортированного массива в двоичное дерево поиска (с изображением рекурсии)
Итак, если мой массив равен 1, 2, 3, 4, 5 ... Сначала я создаю корень моего BST. Затем я делаю 2 лево-дочерним узлом из 3. Затем я делаю 1 лево-дочерний узел из 2 и возвращаюсь к 2? Я не понимаю, как рекурсия проходит через весь процесс ...
Заранее благодарим и извиняюсь, если этот вопрос плохо объяснен. Мне не нужен явный код, но я был бы очень признателен, если бы кто-то помог мне разобраться, как рекурсия проходит через проблему (то есть, какие узлы посещаются в каком порядке/как работает стек вызовов)
Pseudo-code :
Шаг 1. Создайте функцию, которая принимает целочисленный массив, целочисленное начало и целочисленный конец. Start = 0, end = целочисленный размер массива - 1.
Шаг 2. Создайте целочисленную середину, равную (начало + конец)/2.
Шаг 3. Проверьте, чтобы начать> конец.
Шаг 4. Если это так, верните нуль.
Шаг 5. Еще раз, сделайте значение в среднем индексе корня вашего дерева.
Шаг 6. Установите левый узел корня равным функции с (array, start, middle-1).
Шаг 7. Установите правый узел корня, равный функции с (массив, средний + 1, конец).
Могли вы добавляете некоторые пояснения или комментарии к своему ответу для OP? –