把排序数组转换为高度最小的二叉搜索树
来源:互联网 发布:百度网盘mac版本 编辑:程序博客网 时间:2024/06/07 02:43
给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。
注意事项
There may exist multiple valid solutions, return any of them.
样例
给出数组 [1,2,3,4,5,6,7]
, 返回
4 / \ 2 6 / \ / \1 3 5 7
解题思路:二分法进行遍历每步记录区间左和右和节点地址,并进行建树,但是要注意在求问题会最终转化为区间长度为2或3的建立,如何才能不冲突要在下标上进行一些改进不然会出现重复出现某元素的情况。
class Solution {public: /** * @param A: A sorted (increasing order) array * @return: A tree node */ TreeNode *Ans=new TreeNode(0); void dfs(int l,int r,TreeNode *ans,vector<int>t){ ans->val=t[(r+l+1)/2];if(r==l)return;ans->left=new TreeNode(0);dfs(l,(r+l-1)/2,ans->left,t);if(r-(r+l+1)/2>0){ans->right=new TreeNode(0);dfs((r+l+1)/2+1,r,ans->right,t);} } TreeNode *sortedArrayToBST(vector<int> &A) { if(A.size()==0)return NULL; // write your code here dfs(0,A.size()-1,Ans,A); return Ans; }};
0 0
- LintCode SortedArrayToBST 把排序数组转换为高度最小的二叉搜索树
- 题目:把排序数组转换为高度最小的二叉搜索树
- lintcode-把排序数组转换为高度最小的二叉搜索树-177
- 把排序数组转换为高度最小的二叉搜索树(LintCode)
- LintCode:把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintCode(177)——把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- LintCode:把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintcode,把排序数组转换为高度最小的二叉搜索树
- LintCode | 177. 把排序数组转换为高度最小的二叉搜索树
- LintCode 把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树-LintCode
- lintcode——把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintcode把排序数组转换为高度最小的二叉搜索树
- 文本处理命令
- RecyclerView 使用方法
- 复数模实用算法:Alpha max plus beta min algorithm
- zookeeper学习(一)
- CSS水平居中元素方法及反思
- 把排序数组转换为高度最小的二叉搜索树
- L2-021. 点赞狂魔
- 如何使/etc/profile中修改的配置立刻生效?
- 【ESP8266】关于调试fatal exception/自动重启的一些经验分享
- The supplied data appears to be in the Office 2007+ XML
- linux下的僵尸进程及atexit函数的使用及验证
- 【动态规划】zoj Course Selection System
- 动态规划练习题-16(踩方格)
- 练习