1. 题目

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例:
给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

      0 / \ -3   9 /   / -10  5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-height-tree-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 二叉搜索树中序遍历是有序的
  • 每次找到数组的中点作为root
  • 递归处理
class Solution {public:TreeNode* sortedArrayToBST(vector<int>& nums) {return build(nums,0,nums.size()-1);}TreeNode* build(vector<int>& nums, int l, int r){if(l > r)return NULL;int mid = l+((r-l)>>1);TreeNode* root = new TreeNode(nums[mid]);root->left = build(nums,l,mid-1);root->right = build(nums,mid+1,r);return root;}
};

程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)相关推荐

  1. leetcode面试题 04.02. 最小高度树(深度优先搜索)

    给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. public TreeNode sortedArrayToBST(int[] nums) {if(nums ...

  2. 程序员面试金典 - 面试题 01.02. 判定是否互为字符重排(哈希map)

    1. 题目 给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串. 示例 1: 输入: s1 = "abc", s2 = &qu ...

  3. 程序员面试金典 - 面试题 08.02. 迷路的机器人(DFS/动态规划)

    文章目录 1. 题目 2. 解题 2.1 DFS 2.2 动态规划 1. 题目 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列. 机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍 ...

  4. 程序员面试金典 - 面试题 04.09. 二叉搜索树序列(双端队列+回溯)**

    1. 题目 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树. 给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组. 示例: 给定如下二叉树2/ \1 3 返回: ...

  5. 程序员面试金典 - 面试题 10.02. 变位词组(哈希map)

    1. 题目 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起. 变位词是指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", ...

  6. 程序员面试金典 - 面试题 16.02. 单词频率(哈希表/Trie树)

    文章目录 1. 题目 2. 解题 2.1 哈希解法 2.2 Trie树 1. 题目 设计一个方法,找出任意指定单词在一本书中的出现频率. 你的实现应该支持如下操作: WordsFrequency(bo ...

  7. 程序员面试金典 - 面试题 04.12. 求和路径(二叉树递归)

    1. 题目 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负). 设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量. 注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但 ...

  8. 程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)

    1. 题目 二进制数转字符串.给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式. 如果该数字不在0和1之间,或者无法精确地用32位以内的二进制表示,则打印" ...

  9. 程序员面试金典 - 面试题 04.06. 后继者(循环中序遍历)

    1. 题目 设计一个算法,找出二叉搜索树中指定节点的"下一个"节点(也即中序后继). 如果指定节点没有对应的"下一个"节点,则返回null. 示例 1: 输入: ...

最新文章

  1. Pytorch使用GPU
  2. 设计模式模式游客(Visitor)摘录
  3. 这就是编程的终极难题? | 每日趣闻
  4. dns学习笔记04-配置slave区域
  5. stm32之通用定时器
  6. 拓展编辑器(五)_监听事件
  7. Arthas 使用的各类方式
  8. VC编译的除法的一段汇编代码解释
  9. Python实现Adaboost
  10. Eclipse 插件使用
  11. mysql用户管理--密码管理
  12. java新手笔记7 找最小、最大、排序
  13. 《算法分析与设计》练习14
  14. 成语——》寻找心中的巴拿马
  15. redis做浏览历史数据
  16. 写在2021最后一天
  17. Zynq实现分布式Fir滤波器
  18. Hive MetaStore服务增大内存
  19. php实现的单例模式
  20. 国产电影最俗套的九十九个镜头(完整版)

热门文章

  1. php公钥模数,php – 如何从公共指数和RSA模数生成DER / PEM证书?
  2. java几种删除_几种删除Linux目录的方法
  3. uboot的一般性介绍
  4. 二维数组数和指针操作的理解
  5. Ubuntu16.04彻底删除MySQL5.7
  6. java线程池,信号量使用demo
  7. 将python代码编译成.so文件
  8. linux相关命令介绍
  9. react-router 页面离开 提示数据变更
  10. 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库...