程序员面试金典 - 面试题 04.02. 最小高度树(二叉搜索树中序遍历)
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. 最小高度树(二叉搜索树中序遍历)相关推荐
- leetcode面试题 04.02. 最小高度树(深度优先搜索)
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. public TreeNode sortedArrayToBST(int[] nums) {if(nums ...
- 程序员面试金典 - 面试题 01.02. 判定是否互为字符重排(哈希map)
1. 题目 给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串. 示例 1: 输入: s1 = "abc", s2 = &qu ...
- 程序员面试金典 - 面试题 08.02. 迷路的机器人(DFS/动态规划)
文章目录 1. 题目 2. 解题 2.1 DFS 2.2 动态规划 1. 题目 设想有个机器人坐在一个网格的左上角,网格 r 行 c 列. 机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍 ...
- 程序员面试金典 - 面试题 04.09. 二叉搜索树序列(双端队列+回溯)**
1. 题目 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树. 给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组. 示例: 给定如下二叉树2/ \1 3 返回: ...
- 程序员面试金典 - 面试题 10.02. 变位词组(哈希map)
1. 题目 编写一种方法,对字符串数组进行排序,将所有变位词组合在一起. 变位词是指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", ...
- 程序员面试金典 - 面试题 16.02. 单词频率(哈希表/Trie树)
文章目录 1. 题目 2. 解题 2.1 哈希解法 2.2 Trie树 1. 题目 设计一个方法,找出任意指定单词在一本书中的出现频率. 你的实现应该支持如下操作: WordsFrequency(bo ...
- 程序员面试金典 - 面试题 04.12. 求和路径(二叉树递归)
1. 题目 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负). 设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量. 注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但 ...
- 程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)
1. 题目 二进制数转字符串.给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式. 如果该数字不在0和1之间,或者无法精确地用32位以内的二进制表示,则打印" ...
- 程序员面试金典 - 面试题 04.06. 后继者(循环中序遍历)
1. 题目 设计一个算法,找出二叉搜索树中指定节点的"下一个"节点(也即中序后继). 如果指定节点没有对应的"下一个"节点,则返回null. 示例 1: 输入: ...
最新文章
- Pytorch使用GPU
- 设计模式模式游客(Visitor)摘录
- 这就是编程的终极难题? | 每日趣闻
- dns学习笔记04-配置slave区域
- stm32之通用定时器
- 拓展编辑器(五)_监听事件
- Arthas 使用的各类方式
- VC编译的除法的一段汇编代码解释
- Python实现Adaboost
- Eclipse 插件使用
- mysql用户管理--密码管理
- java新手笔记7 找最小、最大、排序
- 《算法分析与设计》练习14
- 成语——》寻找心中的巴拿马
- redis做浏览历史数据
- 写在2021最后一天
- Zynq实现分布式Fir滤波器
- Hive MetaStore服务增大内存
- php实现的单例模式
- 国产电影最俗套的九十九个镜头(完整版)
热门文章
- php公钥模数,php – 如何从公共指数和RSA模数生成DER / PEM证书?
- java几种删除_几种删除Linux目录的方法
- uboot的一般性介绍
- 二维数组数和指针操作的理解
- Ubuntu16.04彻底删除MySQL5.7
- java线程池,信号量使用demo
- 将python代码编译成.so文件
- linux相关命令介绍
- react-router 页面离开 提示数据变更
- 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库...