【试题描述】定义一个函数,输入一个有序数组生成最小高度二叉树

We will try to create a binary tree such that for each node, the number of nodes in the left
subtree and the right subtree are equal, if possible
Algorithm:
1   Insert into the tree the middle element of the array
2   Insert (into the left subtree) the left subarray elements
3   Insert (into the right subtree) the right subarray elements
4   Recurse

【参考代码】

 1     public static Node addToTree(int[] arr,int start,int end)
 2     {
 3         if(end < start)
 4             return null;
 5         int mid = (start + end)/2;
 6         Node n = new Node(arr[mid]);
 7         n.left = addToTree(arr,start,mid-1);
 8         n.right = addToTree(arr,mid+1,end);
 9         return n;
10     }
11     public static Node createMinBST(int[] array)
12     {
13         return addToTree(array,0,array.length - 1);
14     }

【IT笔试面试题整理】有序数组生成最小高度二叉树相关推荐

  1. 通过有序数组生成平衡搜索二叉树

    题目:给定一个有序数组sortArr,已知其中没有重复值,用这个有序数组生成一颗平衡搜索二叉树,并且该搜索二叉树中序遍历的结果与sortArr一致 思路:用有序数组最中间的数生成搜索二叉树的头节点,然 ...

  2. 【IT笔试面试题整理】数组中出现次数超过一半的数字

    [试题描述]数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. [试题分析]时间复杂度O(n),空间复杂度O(1) 思路1: 创建一个hash_map,key为数组中的数,value为此数 ...

  3. C语言有序数组转为平衡的二叉树(附完整源码)

    C语言有序数组转为平衡的二叉树 C语言有序数组转为平衡的二叉树完整源码(定义,实现,main函数测试) C语言有序数组转为平衡的二叉树完整源码(定义,实现,main函数测试) #include< ...

  4. 面试题45. 把数组排成最小的数

    题目: 面试题45. 把数组排成最小的数 题解: 1. 题解一: 2. 题解二: * 解题思路:* 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来.关 ...

  5. 网易历届笔试面试题整理大全

    整理了一下网易往届笔试面试题,希望对大家有帮助: 超级有用的面试题:Java常见面试题    常见算法面试题   数据库常见面试题  操作系统常见面试题   C/C++常见面试题  大数据常见面试   ...

  6. 面试题11. 旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...

  7. C++合并两个有序数组成一个有序数组时间复杂度最小的解法

    简单来说,时间复杂度最低为O(m+n)== m和n指的是两个有序数组的大小 代码实现: //输出结果 template<class T> void PrintVecResult(vecto ...

  8. 剑指offe面试题8 旋转数组的最小数字 (java实现)

    解题思路: 针对旋转数组的特点,即旋转后,数组的前半部分是有序的,后半部分是有序的. 1.先考虑一般情况:可以参考二分查找的思想,在数组中设置两个指针,一个指向数组的起始位置,一个指向数组的结束位置. ...

  9. 剑指offer:面试题11. 旋转数组的最小数字

    题目:旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2, ...

最新文章

  1. 利用HTTP Cache来优化网站
  2. python的盈利模式_八大盈利模式是什么?一篇文教会你盈利模式分析!
  3. 学生时代,我做过最有价值的事是什么?
  4. java get与post区别_HTTP请求(GET与POST区别)和响应
  5. oracle启动限制模式
  6. 测试开发必须掌握的知识点:Java反射
  7. python实现视频剪切与拼接
  8. python 计时器模块_python中计时器
  9. 读小说赚钱吗?这个年入百万
  10. h5 修改title 微信_iH5中级教程:微信必备,为H5设定标题
  11. arctanx麦克劳林公式推导过程_徒手搭建三角函数公式推导体系
  12. 这篇文章帮你避坑,教会你选购内存卡
  13. pycharm验证码
  14. 25、软件安全-预防账号密码泄露
  15. 美国500名iOS用户受害?黑客组织发动恶意广告
  16. Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)
  17. 抛弃WinSCPnbsp;教你使用CuteFTP传输文件
  18. 什么是DDOS攻击?
  19. 2022年全球与中国液位传感器行业发展趋势及投资战略分析报告
  20. git merge和rebase的区别

热门文章

  1. [转] 标准化和归一化
  2. tomcat的备份脚本
  3. Vue实现的滑动切换路由组件
  4. 移动端HTML响应式布局之神奇的pt(自测99.99%与设计图一致)
  5. opensuse x64下编译Ice源码(以编译c++为例)
  6. 《并行计算的编程模型》一1.4 数据类型
  7. 未雨绸缪:从软件测试到质量保证
  8. Laravel Breadcrumbs 自动面包屑导航
  9. 【转】Dubbo_与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
  10. A problem while linking c++ to python