面试19之创建一颗高度最小的二叉搜索树
来源:互联网 发布:jq的数组点击显示隐藏 编辑:程序博客网 时间:2024/05/16 17:24
题目描述
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
注意:这只是求高度最小的二叉查找树,不是真的要构建一颗树,完全二叉树的高度最小。为log2^n + 1
//第一种方式,二分法,非递归写法。
int BuildMinimalBST(vector<int> vals){int left = 0;int right = vals.size()-1;int count = 0;while(left <= right){count++;int mid = left+( (right-left) >> 1);if(mid-left < right-mid) //左区间中的元素小于右区间中的元素。{left = mid + 1;}else //左区间中的元素个数大于右区间中的元素个数。{right = mid - 1;}}return count;}
//第二种方式:递归写法。
int CreateMinBST(int start,int end){if(start > end)return 0;int mid = start+( (end - start) >> 1);int left = CreateMinBST(start,mid-1);int right = CreateMinBST(mid+1,end);return left > right ? left+1 : right+1;}int BuildMinimalBST(vector<int> vals){return CreateMinBST(0,vals.size()-1);}
0 0
- 面试19之创建一颗高度最小的二叉搜索树
- 创建最小高度二叉树
- 把排序数组换成高度最小的二叉搜索树
- 求二叉搜索树(BST)的最小高度
- 程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。
- 程序员面试金典: 9.4树与图 4.3给定一个有序整数数组,元素各不相同且按升序排列,创建一颗高度最小的二叉查找树。 ---快速解法
- 给定有序数组,创建高度最小的二叉查找树
- 有序数组创建高度最小的二叉查找树
- 二叉树的最小高度
- 创建一颗最小二叉查找树
- 二叉树最小高度
- LintCode SortedArrayToBST 把排序数组转换为高度最小的二叉搜索树
- 题目:把排序数组转换为高度最小的二叉搜索树
- lintcode-把排序数组转换为高度最小的二叉搜索树-177
- 把排序数组转换为高度最小的二叉搜索树(LintCode)
- LintCode:把排序数组转换为高度最小的二叉搜索树
- 把排序数组转换为高度最小的二叉搜索树
- lintCode(177)——把排序数组转换为高度最小的二叉搜索树
- hdu 1540 Tunnel Warfare(线段树——单点更新+区间合并)
- effective--复合优于继承
- hdu_1083_经典二分图
- 搭建flume集群
- CI类库参考
- 面试19之创建一颗高度最小的二叉搜索树
- 使用VS2017静态编译sqlite3,生成静态的sqlite3.lib
- ubuntu下使用bt dongle
- elasticsearch 之mapping
- javascript常用的一些开发模式(常用)
- 使用百度编辑器的时候的一个小bug
- tensorflow入门基础
- mysql 语句
- 论文提要“Fast Feature Pyramids for Object Detection”