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

108. 将有序数组转换为二叉搜索树【 力扣(LeetCode) 】

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


108. 将有序数组转换为二叉搜索树

一、题目描述

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。

二、测试用例

示例 1:

在这里插入图片描述

输入:nums = [-10,-3,0,5,9]
输出:[0,-3,9,-10,null,5]
解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:

在这里插入图片描述

示例 2:

在这里插入图片描述

输入:nums = [1,3]
输出:[3,1]
解释:[1,null,3][3,1] 都是高度平衡二叉搜索树。

提示:

1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 按 严格递增 顺序排列

三、解题思路

  1. 基本思路:
      平衡二叉树的中序遍历是有序序列,同时平衡二叉树的左右子树高度差不超过 1 ,所以可以考虑每次将序列分成三块,左子树,根和右子树。为了满足高度约束,根节点必须是序列的中心,左右子树各占一半,然后递归建立子树。(本质上就是二分查找)
  2. 具体思路:
    • 编写递归构建子树函数:
      • 确定终止条件,当子序列的起点大于终点是,返回空指针;
      • 定位子序列中心;
      • 构建节点;
      • 递归构建左子树;
      • 递归构建右子树;
      • 返回节点;

四、参考代码

时间复杂度:O(n)\Omicron(n)O(n)
空间复杂度:O(logn)\Omicron(log\; n)O(logn)

/*** 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:vector<int> m_nums;TreeNode* BuildNode(const int& start, const int& end) {if (start > end)return nullptr;int mid = (start + end) >> 1;TreeNode* p = new TreeNode(m_nums[mid]);p->left = BuildNode(start, mid - 1);p->right = BuildNode(mid + 1, end);return p;}TreeNode* sortedArrayToBST(vector<int>& nums) {m_nums = nums;return BuildNode(0, nums.size() - 1);}
};
http://www.dtcms.com/a/397959.html

相关文章:

  • 构建你的 MCP 能力层:.NET 9 + SK 的系统方案
  • 好网站分享建设一个网站的具体流程
  • 缓存优化技术指南:让数据访问快如闪电
  • 算法相关问题记录
  • DV OV EV SSL证书验证级别
  • 中山做网站哪家公司好网页设计模板html图片
  • AI赋能 破局重生 嬗变图强 | 安贝斯受邀参加2025第三届智能物联网与安全科技应用大会暨第七届智能化信息化年度峰会
  • ASP.NET 学习总结
  • 基于ASP.NET+SQL Server简单的 MVC 电商网站
  • 开源生态与技术民主化 - 从LLaMA到DeepSeek的开源革命(LLaMA、DeepSeek-V3、Mistral 7B)
  • 电路方案分析(二十三)Hi-Fi耳机放大器电源参考设计
  • 快速识别可访问端口号:Python 实现端口扫描
  • 【汽车篇】AI深度学习在汽车激光焊接外观检测的应用
  • 广州专业建站旅游景区网站建设规划
  • 【第30话:路径规划】自动驾驶中Hybrid A星(A*)搜索算法的详细推导及代码示例
  • [算法导论] 正则匹配 . *
  • 电子商务网站开发教程网站源码.net
  • (三)React+.Net+Typescript全栈(动态Router/Redux/RTK Query获取后端数据)
  • elasticsearch的使用、api调用、更新、持久化
  • Jenkins(速通版)
  • IDEA新建SpringBoot项目时没有低版本Java选项
  • Jupyter Lab 汉化
  • Amazon Chime SDK 详解:AWS 的实时音视频利器
  • python学智能算法(三十八)|使用Numpy和PyTorch模块绘制正态分布函数图
  • 佛山网站建设no.1开源站群cms
  • 阿里云SVN服务器搭建出现svn log messages no date
  • 豆包・图像创作模型Seedream4.0创意玩法大赏:开启 AI 绘画新纪元
  • 强化学习策略梯度算法梳理:从REINFORCE到PPO2(REINFORCE、QAC、A2C、Off-Policy AC、PP01、PPO2))
  • 产品网站开发流程图邹平做网站
  • ruoyi 框架添加新module