当前位置: 首页 > news >正文

力扣HOT100之二叉树:108. 将有序数组转换为二叉搜索树


这道题之前做过,思路又给忘了,这道题用递归做是最简单的。
由于得到的数组是有序的,我们只需要取出中间位置的元素medium作为根节点,然后medium左边的剩余元素组成根节点的左子树,medium右边的剩余元素组成根节点的右子树。这里我们需要使用迭代器构造的方式分别构造出左边的子数组和右边的子数组,然后再递归调用sortedArrayToBST()分别将左子树和右子树构造出来,最终将根节点返回即可。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {//本题用递归来做if(nums.size() < 1)return nullptr;int medium = nums.size() / 2;TreeNode* root = new TreeNode(nums[medium]);  //将中间位置的数值设置为根节点//左边的剩余元素构成左子树vector<int> left_part(nums.begin(), nums.begin() + medium);root -> left = sortedArrayToBST(left_part);//右边的剩余元素构成右子树vector<int> right_part(nums.begin() + medium + 1, nums.end());root -> right = sortedArrayToBST(right_part);return root;}
};

相关文章:

  • 45 python csv(存储表格数据)
  • No More Adam: 新型优化器SGD_SaI
  • 前端二进制数据指南:从 ArrayBuffer 到高级流处理
  • 【鸿蒙开发避坑】使用全局状态变量控制动画时,动画异常甚至动画方向与预期相反的原因分析以及解决方案
  • C语言_动态内存管理
  • vue引用cesium,解决“Not allowed to load local resource”报错
  • ProfibusDP主站转modbusTCP网关与ABB电机保护器数据交互
  • 典籍知识问答模块AI问答bug修改
  • 信息与信息化
  • LeetCode 第 45 题“跳跃游戏 II”
  • BBR 的 buffer 动力学观感
  • 【ant design】ant-design-vue 4.0实现主题色切换
  • C语言中字符串函数的详细讲解
  • 【软考 程序流程图的测试方法】McCabe度量法计算环路复杂度
  • 无线信道的噪声与干扰
  • 恢复因 oh-my-zsh 安装导致丢失的 zsh 环境变量
  • Python自学笔记3 常见运算符
  • C语言:在 Win 10 上,gcc 如何编译 gtk 应用程序
  • 【VSCode】快捷键合集(持续更新~)
  • python3GUI--多功能WiFi网络工具箱 By:PyQt5(详细分享)
  • “上海-日喀则”援藏入境旅游包机在沪首航
  • 特写|银耳种植“北移”到沧州盐山,村民入伙可年增收4万元
  • 网文书单|推荐4本网文,可以当作《绍宋》代餐
  • 大风+暴雨,中央气象台双预警齐发
  • 上海天文馆走进徐家汇书院,XR沉浸式天文科普体验再推力作
  • 秦洪看盘|风格有所转变,热钱回流高弹性品种