首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历
admin
2019-03-29
93
问题
输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
因此返回true。
如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。
选项
答案
using namespace std; /////////////////////////////////////////////////////////////////////// // Verify whether a squence of integers are the post order traversal // of a binary search tree (BST) // Input: squence - the squence of integers // length - the length of squence // Return: return ture if the squence is traversal result of a BST, // otherwise, return false /////////////////////////////////////////////////////////////////////// bool verifySquenceOfBST(int squence[], int length) { if(squence == NULL || length <= 0) return false; // root of a BST is at the end of post order traversal squence int root = squence[length - 1]; // the nodes in left sub-tree are less than the root int i = 0; for(; i < length - 1; ++ i) { if(squence[i] > root) break; } // the nodes in the right sub-tree are greater than the root int j = i; for(; j < length - 1; ++ j) { if(squence[j] < root) return false; } // verify whether the left sub-tree is a BST bool left = true; if(i > 0) left = verifySquenceOfBST(squence, i); // verify whether the right sub-tree is a BST bool right = true; if(i < length - 1) right = verifySquenceOfBST(squence + i, length - i - 1); return (left && right); }
解析
这是一道trilogy的笔试题,主要考查对二元查找树的理解。
在后续遍历得到的序列中,最后一个元素为树的根结点。从头开始扫描这个序列,比根结点小的元素都应该位于序列的左半部分;从第一个大于跟结点开始到跟结点前面的一个元素为止,所有元素都应该大于跟结点,因为这部分元素对应的是树的右子树。根据这样的划分,把序列划分为左右两部分,我们递归地确认序列的左、右两部分是不是都是二元查找树。
转载请注明原文地址:https://kaotiyun.com/show/BxmZ777K
0
程序员面试
相关试题推荐
Signslike"Pleaseratemefivestars"pointtoagrowingproblemwithbusinessesintheon-demandeconomyofapp-basedservices
Weakdollarorno,$46,000—thepriceforasingleyearofundergraduateinstructionamidtheredbrickofHarvardYard—is【C1】__
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1,-2,3,10,-4,7,2,-5,和最大的子数组为3,10,
四个工人,四个任务,每个人做不同的任务需要的时间不同,求任务分配的最优方案。(2005年5月29日全国计算机软件资格水平考试——软件设计师的算法题)。
执行下面代码后:
存储过程和函数的区别
在百度中搜索“腊梅”图片。
在WindowsXP的桌面上创建名为“附件”的文件夹图标。
请在当前幻灯片中的图形前添加一个形状,并输入“技术部”。
信息系统的生命周期可以简化为立项、开发、运维及消亡四个阶段,()属于开发阶段的工作。
随机试题
下列叙述中,错误的是()
A.致病性大肠杆菌肠炎B.轮状病毒性肠炎C.生理性腹泻D.细菌性痢疾E.金黄色葡萄球菌肠炎多发生在秋、冬季的是
下列交易中,属于证券交易的有()
2009年12月20日,甲公司董事会批准了一项股份支付协议。协议规定,2010年1月1日,公司为其100名中层以上管理人员每人授予1000份现金股票增值权,条件是这些人员必须为公司连续服务3年,并可自2012年12月31日起根据股价的增长幅度行权获得现金。
TheywilltraveltoSingaporenextmonth________theyhaveenoughmoney.
协调推进“四个全面”战略布局,是党的十八大以来党中央从实现“两个一百年”奋斗目标、实现中华民族伟大复兴的中国梦的战略高度,统敌国内国际两个大局,把握我国发展新特征确定的治国理政新方略。在“四个全面”战略布局中居于引领地位的是()
中国共产党根据马克思列宁主义关于农业社会主义改造的思想,从我国的实际出发,开创了一条有中国特点的农业合作化道路,成功地实现了对个体农业的社会主义改造。其历史经验主要有
软件测试通常可分为白盒测试和黑盒测试。白盒测试是根据程序的(1)来设计测试用例,黑盒测试是根据软件的规格说明来设计测试用例。常用的黑盒测试方法有边值分析、等价类划分、错误猜测、因果图等。其中,(2)经常与其他方法结合起来使用。软件测
实时操作系统必须首先考虑的是______。
—Whydidyoudropthechanceofearningbigmoney?—______.Youknow,Idon’twanttogetrichbytakingrisks.
最新回复
(
0
)