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

【代码随想录day 20】 力扣 108.将有序数组转换为二叉搜索树

视频讲解:https://www.bilibili.com/video/BV1uR4y1X7qL/?share_source=copy_web&vd_source=a935eaede74a204ec74fd041b917810c
文档讲解:https://programmercarl.com/0108.%E5%B0%86%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.html#%E6%80%9D%E8%B7%AF
力扣题目:https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/

这道题可以偷懒将二叉树写成一条队列形式,但是没必要,主要思路如下:

  1. 找到数组中心值作为root根节点,左边作为左子树,右边作为右子树。
  2. 进入递归部分,每次选中中心作为根节点,当左范围大于右范围递归终止。
  3. 最后返回整棵树。
class Solution {
public:TreeNode *travesal(vector<int>&nums, int left, int right){//判断终止条件if(left > right) return NULL;int mid = (left + right)/2;TreeNode *root= new TreeNode(nums[mid]);//递归root->left = travesal(nums, left, mid-1);root->right = travesal(nums, mid+1, right);return root;}TreeNode* sortedArrayToBST(vector<int>& nums) {TreeNode *result = travesal(nums, 0, nums.size()-1);return result;}
};
http://www.lryc.cn/news/620736.html

相关文章:

  • SwiftUI 页面弹窗操作
  • Linux网络编程:应用层自定义协议与序列化
  • Flutter sqflite插件
  • 支付域——账户系统设计
  • 支持pcm语音文件缓存顺序播放
  • 解剖HashMap的put <四> jdk1.8
  • OpenCv(二)——边界填充、阈值处理
  • Nacos 配置热更新:Spring Boot Bean 自动获取最新配置
  • flutter3.7.12版本设置TextField的contextMenuBuilder的文字颜色
  • MixOne在macOS上安装碰到的问题
  • 解决SQL Server连接失败:Connection refused: connect
  • 苹果正计划大举进军人工智能硬件领域
  • 从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.14
  • 2025 电赛 C 题 发挥3 带数字编号的正方形识别 边长测量
  • [特殊字符]走进华为,解锁商业传奇密码
  • 通过网页调用身份证阅读器http websocket方法-湖南步联科技美萍MP999A电子————仙盟创梦IDE
  • 从根源到生态:Apache Doris 与 StarRocks 的深度对比 —— 论开源基因与长期价值的优越性
  • 审批流程系统设计与实现:状态驱动、灵活扩展的企业级解决方案
  • 实战指南|消防管理系统搭建全流程解析
  • OpenCV ------图像基础处理(一)
  • 【P81 10-7】OpenCV Python【实战项目】——车辆识别、车流统计(图像/视频加载、图像运算与处理、形态学、轮廓查找、车辆统计及显示)
  • 【OpenCV】Mat详解
  • 入门基础人工智能理论
  • 计算机视觉(opencv)实战二——图像边界扩展cv2.copyMakeBorder()
  • 论,物联网日志系统架构如何设计?
  • AI增强SEO关键词表现
  • Postman 平替 技术解析:架构优势与实战指南
  • 考研408《计算机组成原理》复习笔记,第五章(2)——CPU指令执行过程
  • 使用 Docker 部署 PostgreSQL
  • 考研408《计算机组成原理》复习笔记,第四章(3)——指令集、汇编语言