C语言 | Leetcode C语言题解之第108题将有序数组转换为二叉搜索树

题目:

题解:

cpp 复制代码
struct TreeNode* helper(int* nums, int left, int right) {
    if (left > right) {
        return NULL;
    }

    // 选择任意一个中间位置数字作为根节点
    int mid = (left + right + rand() % 2) / 2;

    struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
    root->val = nums[mid];
    root->left = helper(nums, left, mid - 1);
    root->right = helper(nums, mid + 1, right);
    return root;
}

struct TreeNode* sortedArrayToBST(int* nums, int numsSize) {
    return helper(nums, 0, numsSize - 1);
}
相关推荐
橘色的喵4 小时前
现代 C++17 相比 C 的不可替代优势
c语言·c++·现代c++·c++17
浅念-4 小时前
C/C++内存管理
c语言·开发语言·c++·经验分享·笔记·学习
Mr YiRan4 小时前
函数指针与指针运算
c语言
sprintzer5 小时前
2.06-2.15力扣数学刷题
算法·leetcode·职场和发展
滴滴答滴答答7 小时前
LeetCode Hot100 之 17 有效的括号
算法·leetcode·职场和发展
老鼠只爱大米7 小时前
LeetCode经典算法面试题 #20:有效的括号(数组模拟法、递归消除法等五种实现方案详细解析)
算法·leetcode··括号匹配·数组模拟法·递归消除法
不想看见4047 小时前
6.3Permutations -- 回溯法--力扣101算法题解笔记
笔记·算法·leetcode
敲皮裤的代码9 小时前
《C语言》深入理解指针(4)
c语言
J-TS9 小时前
线性自抗扰控制LADRC
c语言·人工智能·stm32·单片机·算法
A9better10 小时前
C++——指针与内存
c语言·开发语言·c++·学习