最小高度的BST
加深对BST的构建过程及递归思想的理解。
/***************************************************** * \file MinimalBST.cpp * \date 2016/05/30 16:00 * \问题描述: 对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。 给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。 * \问题分析: 由于没有让给出树的构造过程,所以可以直接通过归纳的方式计算得出结果。但是在这里我们仍旧使用递归的方式模拟树的构建,并最终得到二叉搜索树。 题目中要求树的高度最小实际上是让构造一个平衡二叉树,或者说为了让左右两个子树的节点数量越接近越好。 ///虽然可以直接公式算高度,不过也写了个建树顺便算高度的 *****************************************************/ #include <iostream> using namespace std; #include <vector> struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) :val(x), left(nullptr), right(nullptr){} }; class MinimalBST { public: TreeNode* buildBST(vector<int> _vals,int _left,int _right) { if (_left>_right) { return nullptr; } ; TreeNode* root = new TreeNode(_vals[mid]); root->left = buildBST(_vals, _left, mid - ); root->right = buildBST(_vals, mid + , _right); return root; } int highBST(TreeNode* _root) { if (_root==nullptr) { ; } int left = highBST(_root->left); int right = highBST(_root->right); ) : (right + ); } int buildMinimalBST(vector<int> vals) { // write code here ) { ; } TreeNode* root = buildBST(vals,,vals.size()-); return highBST(root); } };
最小高度的BST的更多相关文章
- [LeetCode] Minimum Height Trees 最小高度树
For a undirected graph with tree characteristics, we can choose any node as the root. The result gra ...
- CSS+DIV问题!DIV的最小高度问题!
DIV层的最小高度问题!就是一个DIV有个最小高度,但是如果DIV层中的内容很多,DIV的高度会根据内容而进行拉长!要求IE6.IE7还有firefox都要兼容!我试了很多网上的方法都不好用!请测试后 ...
- 外部div自适应内部标签的高度,设置最小高度、最大高度
一.div自适应高度:在前端开发中经常需要让外层的div自动适应内部标签和内容的高度,内部标签可能是<div>.<ul>.<ol>或者文字等各种内容.造成外层的di ...
- ie67 设置最小宽度最小高度
1.最小宽度 min-width:1003px; _width:expression((document.documentElement.clientWidth||document.body.clie ...
- div有最小高度且自适应高度
DIV最小高度且自适应高度 在IE6中,如果子容器的高度超过父容器的时候,父容器会被子容器撑开,所以我们可以直接设置一个height的高度值即可.但是在IE7和firefox就不行了,它不会自动撑 ...
- textarea 的最大高度以及最小高度
<script type="text/javascript"> $(function(){ $("#textarea3").textareaAuto ...
- 解决ie6支持最大高度最小高度的方法
1.IE6支持max-height解决方法 IE6支持最大高度解决CSS代码:.yangshi{max-height:1000px;_height:expression((document.docum ...
- css ie6最小高度问题
最小高度问题: 这个最小高度 min-height:的问题,因为min-height:只在IE7\FF中起作用.至于这个IE6死活就是不认.而我这个页面又必需得用这个最小高度来定. 但头痛的是I ...
- [Swift]LeetCode310. 最小高度树 | Minimum Height Trees
For an undirected graph with tree characteristics, we can choose any node as the root. The result gr ...
随机推荐
- Hadoop管理员的十个最佳实践
前言 接触Hadoop有两年的时间了,期间遇到很多的问题,既有经典的NameNode和JobTracker内存溢出故障,也有HDFS存储小文件问题,既有任务调度问题,也有MapReduce性能问题.遇 ...
- cmd执行mssql脚本或者执行mysql脚本
private static int ExecuteMSSql(DbInfo db, string sqlPath) { Console.WriteLine("=============== ...
- extern的意思
还是在重温C++,看到extern的意思,觉得很有必要记下来. extern是用来干什么的大家想必都是很明白的. 如果有个全局变量,或者其他文件的全局变量,要在本文件或函数中使用,可以通过extern ...
- SQLite学习手册(内置函数)
一.聚合函数: SQLite中支持的聚合函数在很多其他的关系型数据库中也同样支持,因此我们这里将只是给出每个聚集函数的简要说明,而不在给出更多的示例了.这里还需要进一步说明的是,对于所有聚合函数而言, ...
- [原]POJ-1631-Bridging signals-( 水LIS-O(nlogn) -DP)
题目大意:求最长上升子序列(LIS)长度,序列最大数不超过40000.因为只有上升排列的接口才不相交. 思路:普通的 O(n^2)的做法肯定会超时:因此,dp[ ] 记录长度为 i+1 的子序列中最末 ...
- OSX 升级 vim
善用 Homebrew 神器啊,少年!Homebrew - The missing package manager for OS X安装完成后打开终端输入: brew install vim --wi ...
- Python代码编辑器
PyCharm Community 说到PyCharm Community,我们就会想到它是一款免费的开源Python代码编辑器,不过这也是事实啦.PyCharm Community为我们提供了轻量级 ...
- STL容器的遍历删除
STL容器的遍历删除 今天在对截包程序的HashTable中加入计时机制时,碰到这个问题.对hash_map中的每个项加入时间后,用查询函数遍历hash_map,以删除掉那些在表存留时间比某个阈值长的 ...
- windows平台时间函数性能比较QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTime
http://gmd20.blog.163.com/blog/static/168439232012113111759514/ 执行 10000000 次, 耗时 2258,369 微秒 Qu ...
- fix org.openqa.selenium.NoSuchWindowException when find element on windows8.1 ie11.
Steps:1.I was able to resolve the issue after adding the site URL under trusted sites of IE. The sam ...