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);
}
相关推荐
少许极端2 小时前
算法奇妙屋(十二)-优先级队列(堆)
数据结构·算法·leetcode·优先级队列··图解算法
Kuo-Teng4 小时前
LeetCode 118: Pascal‘s Triangle
java·算法·leetcode·职场和发展·动态规划
white-persist4 小时前
差异功能定位解析:C语言与C++(区别在哪里?)
java·c语言·开发语言·网络·c++·安全·信息可视化
野蛮人6号5 小时前
力扣热题100道之207课程表
算法·leetcode·职场和发展
学学学无无止境5 小时前
力扣-买卖股票的最佳时机
leetcode
dangdang___go6 小时前
自定义类型:结构体
c语言·结构体·结构体的声明·结构体的自引用
码界奇点7 小时前
Linux进程间通信三System V 共享内存完全指南原理系统调用与 C 封装实现
linux·c语言·网络·c++·ux·risc-v
Kuo-Teng7 小时前
LeetCode 139: Word Break
java·算法·leetcode·职场和发展·word·动态规划
sin_hielo8 小时前
leetcode 2654
算法·leetcode
..过云雨8 小时前
13.【Linux系统编程】从ELF格式深入理解动静态库
linux·c语言·c++·后端