当前位置: 首页 > 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;}
};
http://www.xdnf.cn/news/501067.html

相关文章:

  • BUG调试案例一:为什么网卡芯片可以找到却PING不通?--RK3588+YT8531网络调试实录
  • 算法:分治法
  • 单调栈和单调队列
  • 使用instance着色
  • 高效完成任务:制定标准与限时完成的双重法宝
  • lc42接雨水
  • 阿里巴巴开源移动端多模态LLM工具——MNN
  • Dockerfile学习指南
  • 搜索引擎工作原理|倒排索引|query改写|CTR点击率预估|爬虫
  • Linux面试题集合(4)
  • 木材价格动态定价实战指南:多算法模型与行业案例深度解析
  • 算法题(148):排座椅
  • 实验八 基于Python的数字图像问题处理
  • MySQL 中 JOIN 和子查询的区别与使用场景
  • 基于 Leaflet 地图库的强大线条、多边形、圆形、矩形等绘制插件Leaflet-Geoman
  • [强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程
  • 《算法导论(第4版)》阅读笔记:p82-p82
  • 如何免费在线PDF转换成Excel
  • Java并发编程的挑战:从理论到实战
  • 题单:汉诺塔问题
  • 使用Langfuse和RAGAS,搭建高可靠RAG应用
  • ctfshow——web入门254~258
  • JavaScript入门【2】语法基础
  • webpack 学习
  • 并发学习之synchronized,JVM内存图,线程基础知识
  • 【双指针】缺失的第一个正整数
  • Visual Studio2022跨平台Avalonia开发搭建
  • 混合学习:Bagging与Boosting的深度解析与实践指南
  • 系统架构设计(七):数据流图
  • 售前工作.工作流程和工具