Convert Sorted Array to Binary Search Tree

问题描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

问题解决:题目要求是要将一个按照升序排列的有序数组转换为一棵高度平衡的二叉搜索树,二叉搜索树我们知道,就是节点的值小于其右子树节点的值而大于其左子树节点的值,平衡则为该树的任意节点左右子树的高度差不超过一。因为数组已经是按照升序排列好了的,所以很明显,如果每次找出数组中间的值作为根节点,那么左边的数组为根节点的左子树,右边的数组为根节点右子树,然后再继续划分数组。到这里可以很清楚地知道我们可以使用递归来解决这个问题。

class Solution {
public:TreeNode* sortedArrayToBST(vector<int>& nums) {int len=nums.size();if(len==0) return NULL;TreeNode *root=new TreeNode(nums[len/2]);vector<int> left,right;//左边数组left.insert(left.begin(),nums.begin(),nums.begin()+len/2);//右边数组right.insert(right.begin(),nums.begin()+len/2+1,nums.end());root->left=sortedArrayToBST(left);root->right=sortedArrayToBST(right);return root;}
};

Leetcode Problem108相关推荐

  1. leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间

    题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...

  2. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

  3. leetcode Longest Substring with At Most Two Distinct Characters 滑动窗口法

    题目解析 代码如下 题目解析 这一题是一道会员的题目,题目介绍如下: Given a string, find the length of the longest substring T that c ...

  4. leetcode 3. Longest Substring Without Repeating Characters 最长非重复子串的长度 滑动窗口法

    题目链接 根据我们之前介绍的滑动窗口法的解法: 滑动窗口法详解 leetcode 438. Find All Anagrams in a String 滑动窗口法 这题,我们不难解决,使用之前的模板. ...

  5. leetcode:2680 Remove Duplicates from Sorted Array 删除数组中的重复元素

    leetcode:26 对数组元素进行去重,使得原数组重复元素最多保留1个 限制: 我们不可以额外分配数组,必须保持空间复杂度为O(1) 这个并不难实现: class Solution(object) ...

  6. LeetCode简单题之二进制表示中质数个计算置位

    题目 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数. 计算置位位数 就是二进制表示中 1 的个数. 例如, 21 ...

  7. LeetCode简单题之删除字符使字符串变好

    题目 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 . 给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串 . 请你返回删除后的字符串.题目数据保证答案总 ...

  8. LeetCode简单题之找出两数组的不同

    题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中: answer[0] 是 nums1 中所有 不 存在于 nums2 中的 ...

  9. LeetCode中等题之区域和检索 - 数组可修改

    题目 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nu ...

  10. LeetCode简单题之整理字符串

    题目 给你一个由大小写英文字母组成的字符串 s . 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: 若 s ...

最新文章

  1. 【OpenCV 4开发详解】轮廓面积与长度
  2. 三星E1200R语言设置_三星 S20 系列评测:依旧是 Android 阵营最高水平
  3. 22.jsp动作元素
  4. (python)查看糗事百科文字 点赞 作者 等级 评论
  5. SpringBoot 多种定时任务实现方式
  6. 如何用Canarytokens搭建蜜罐并检测可疑入侵
  7. 第二章节 变量与数据类型
  8. 好友管理系统 Python
  9. vue src动态加载请求获取的图片
  10. PASCAL VOC 2012 dataset、 云盘分享
  11. bc547可以用8050代换吗_s8050三极管_s8050三极管可以用什么管代替?
  12. 一篇关于程序员的文章
  13. python结束函数_python结束函数
  14. C/C++编程:#pragma once用法总结
  15. 人艰不拆,一句话毁掉小清新!
  16. IC设计多时钟域处理
  17. 幻灯片更换模板_如何创建Google幻灯片模板
  18. 水星MW300R无线路由器的设置方法
  19. 栅格化处理激光雷达点云数据
  20. 实现虚拟机和主机之间的文件传输

热门文章

  1. 21天学通C语言-学习笔记(10)
  2. PDF虚拟打印机怎么保存文件
  3. MySQL客户端工具的选择
  4. 简述 Java 垃圾回收机制
  5. Web服务压力测试工具BullBench
  6. JAVA实现网页版斗地主_Java实现斗地主最简代码实例
  7. canvas实现背景图和二维码合并-生成海报
  8. 使用MATLAB进行二次规划求解最优值
  9. 运行CATIA2018主程序setup.exe时,报错setup:Problem with VC11 Runtime installation
  10. Ubuntu安装Windows字体