腾讯笔试:满二叉排序树问题
题目描述:
于一棵满二叉排序树深度为k,节点数为2^k-1;节点值为1至(2^k - 1),给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点。
样例输入:4 10 15 13
样例输出:12
首先,我们来理解一下满二叉排序树,如下就是一个4层的满二叉排序树:
* 8* / \
* 4 12* / \ / \
* 2 6 10 14* /\ /\ /\ / \
* 1 3 5 7 9 11 13 15
根据上图可以看出,满二叉排序树的中序遍历是从1到(2^k-1)的递增序列(k为层数)。所以,只要给出层数我们就能够确定这个二叉排序树。同时,观察可知,二叉排序树从上到下的根节点刚好是所有元素进行二分查找的中间节点。
根据上面的规律要解决三个节点的最小子树的根节点这个问题可以得到如下几点:
1. 无须建立二叉树,从1~(2^k-1)的递增数组即就是一个满二叉排序树的中序遍历的结果
2. 当输入的三个元素在二分节点两侧时,当前的二分节点就是要查找的最小子树的根节点(根据这个规则,我们也无需判断三个元素,只需判断最大元素和最小元素的位置即可)
3. 当最小节点的值大于二分节点的值,则继续在二分的右半部分进行查找
4. 当最大节点的值小于二分节点的值,则继续在二分的左半部分进行查找
根据如上几点,编写代码如下:
#include <iostream>
#include <cmath>using namespace std;int main()
{int k;int nodeVal[3] = {0};cout<<"请输入四个数字"<<endl;cin >>k>>nodeVal[0]>>nodeVal[1]>>nodeVal[2];int Min = min(min(nodeVal[0],nodeVal[1]),nodeVal[2]);int Max = max(max(nodeVal[0],nodeVal[1]),nodeVal[2]);int left = 1;int right = (int)pow(2,k)-1;int mid = (left+right)/2;while(left<right){if(Min<mid && Max>mid){break;}else if(Min>mid){left = mid+1;mid = (left+right)/2;}else{right = mid-1;mid = (left+mid)/2;}}cout<<"所求最小树的根节点值为:"<<mid<<endl; return 0;
}
腾讯笔试:满二叉排序树问题相关推荐
- 腾讯测试题-满二叉排序树根节点
题目描述: 于一棵满二叉排序树深度为k,节点数为2^k-1;节点值为1至(2^k - 1),给出k和任意三个节点的值,输出包含该三个节点的最小子树的根节点. 样例输入:4 10 15 13 样例输出: ...
- 2011年9月 成都 腾讯笔试 面试过程(亲身体验,仅供参考娱乐)(一)
写这篇日志居然已经是时隔三年了,还依稀记得刚上大学那会儿...时间飞逝啊,感慨万千. 不是神马教程类文章,也不具有代表性,仅作为自己记录找工作过程的点滴. 腾讯笔试+第一次面试 24日上午10点到12 ...
- 3013-04-13 腾讯笔试
题目及答案参考:地址 为什么腾讯笔试的时间是10:30到12:30?难道腾讯人事部认为计算机的学生都是3点睡觉,9点起床,13点吃饭的吗?做了半个小时的题,就饿了:而且刚开始发卷子的时候,那卷子的模样 ...
- dp - 2016腾讯笔试 A
2016腾讯笔试 A Problem's Link -------------------------------------------------------------------------- ...
- 腾讯笔试面试经历(2010年)
发信人: sysuzsx (sysuzsx), 信区: MC 标 题: 腾讯笔试面试经历 发信站: 逸仙时空 Yat-Sen Channel (Mon May 24 13:01:43 2010) 今天 ...
- 对于一颗满二叉排序树深度为K,求最小子树根节点值 Python代码实现
对于一颗满二叉排序树深度为K,求最小子树根节点值 Python代码实现 def binary_tree(): n = int(input("请输入层数:")) a = int(in ...
- 2020-08-23腾讯笔试 删除节点 数字拆分
腾讯笔试 [题目1]删除节点 给出一个单链表,删除一个节点,输出删除后的所有节点的值 输入两行. 第一行n,k,表示原链表长度n,要删除第k个节点. 第二行n个整数表示原链表每个节点的值. [代码]1 ...
- 2015腾讯笔试大题
今天做完腾讯的在线笔试,感觉自己弱爆了,选择题部分考得比较基础,但是考的面比较广,数据结构,计算机网络,算法常识,概率题,C,C++,都有.大题如下: 在一组数的编码中,若任意两个相邻的代码只有一位二 ...
- 2013腾讯笔试之旅
今天是个好日子,艳阳高照,值得出门.今天也是个比较特殊的日子,因为要去做个实习生笔试,而且还是腾讯这家猎头.对于我们这种名不见经传的二本学校来说,能给个笔试的机会就算不错了,哪里像某某科技大学,人才是 ...
最新文章
- 1小时学会:最简单的iOS直播推流(番外)运行不起AWLive的demo的同学请看这里
- Ubuntu16.04中WPS不能输入中文
- python【蓝桥杯vip练习题库】ADV-188排列数
- 将Java程序变成可执行文件的简单方法
- 在Windows上部署AMP(Apache2.4+MySQL8.0+PHP7.2)
- CVPR 2022 接收结果出炉!录用 2067 篇,接收数量上升24%(附最新论文下载)
- Javascript 获取页面高度(多种浏览器)
- 第三次学JAVA再学不好就吃翔(part115)--多线程
- 自动特征工程、NAS、超参调优和模型压缩,微软开源的NNI一库搞定!
- cr3格式是什么意思_尼康DX镜头是什么意思
- 爬虫数据传入mysql_nodejs爬虫数据存入mysql
- pycharm 服务器证书错误,pycharm 如何跳出服务器证书不受信任的提示
- json输出count如何计算_基于 Kafka + Flink + Redis 的电商大屏实时计算案例
- CrossApp 设置App启动页(无任何黑屏白屏,显示完启动画面之间到显示出首页界面)
- 羡慕的核心是焦虑_焦虑是自由的头晕
- 电动汽车对系统运行的影响(Matlab实现)
- 工程造价为什么会出现“三超问题”?
- 英雄联盟英雄中英文名
- 视频网站ts流媒体服务器,流媒体服务器支持HLS,RTMP,RTSP,HTTP-FLV,HTTP-TS,HTTP-AAC输出...
- R语言之几大常见概率分布