Вопрос 14: Получение ДДП с автобалансировкой из упорядоченного массива
/* Функция, которая строит сбалансированное двоичное дерево поиска из отсортированного массива */
struct node* sortedArrayToBST(int arr[], int start, int end)
{
if (start > end)
return NULL;
/* Получить средний элемент и сделать его root */
int mid = (start + end)/2;
struct node *root = newNode(arr[mid]);
/* Рекурсивно построить левое поддерево */
root->left = sortedArrayToBST(arr, start, mid-1);
/* рекурсивно построить правое поддерево */
root->right = sortedArrayToBST(arr, mid+1, end);
return root;
}