第9 题 判断整数序列是不是二元查找树的后序遍历结果

【数据结构】【输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果】 题目来源:北航14级6系数据结构作业题 【问题描述】输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 【输入形式】输入任意长度的数组,数字之间空格分开 【输出形式】true 或者 false 【样例输入】输入5 7 6 9 11 10 8 【样例输出】true 【样例说明】由于这一整数序列是如下树的后序遍历结果:     阅读详情
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。
如果是返回true,否则返回false。
例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:
     8
    / \
  6 10
  / \   / \
5 7 9 11
因此返回true。

如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。


思路:

(1) 二元查找树的性质:左子树< 根 < 右子树

(2)在后序遍历的过程中根总是最后一个访问的,所以最后一个元素是根,那么根据(1)

          我们有,以某个数为分界点,前面都小于根,后面都大于根,否则返回false;然后

          进行一个递归可得解,其中临界点是 只有一个点的时候恒成立。


#include <iostream>
#include <vector>

using namespace std;
typedef int T;
typedef vector<T> VRI;

bool IsSuit(VRI &vr,int low,int high)
{

	if ( low == high )
		return true;

	for (int i = low;vr[i] < vr[high] && i < high;i ++)
		;
	int middle = i;
	for (;i < high;i ++)
		if( vr[i] < vr[high] )
			return false;
	
	if ( !IsSuit(vr,low,middle-1) )
		return false;
	if ( !IsSuit(vr,middle,high-1) )
		return false;

	return true;
}

int main()
{
	VRI vr1;
	vr1.reserve(20);
	T key = 0;

	while ( !(cin >> key).eof() )
	{
		vr1.push_back(key);
	}

	if ( IsSuit(vr1,0,vr1.size()-1) )
		cout << "true" << endl;
	else
		cout << "false" <<endl;

	return 0;
}


电阻应变式力传感器 阅读详情

相关推荐

pix4d安装步骤

pix4d三维模型软件的安装步骤

Little_Bee_27000的博客 1万+

程序员面试题精选(6):判断整数序列是不是二元查找树的后序遍历结果

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:         8       /  /      6    10    / /    / /   5   7   9  11因此返回true。如果输入7、4、6、5,没有哪棵树的后序遍历的结

yysdsyl的专栏 2062

CondaHTTPError: HTTP 404 NOT FOUND for url

用conda创建新环境时出现问题了。

qq_40713201的博客 1270

判断整数序列是不是二元查找树的后序遍历结果

#include using namespace std; /* 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6  10 / \ / \ 5  7 9 11 因

I____KNOW的博客 443

版图提取的spice网表中参数含义及二级效应STI/WPE

寄生电阻、寄生电容可以从版图提出的.sp文件中看, ad area of drain 面积 as area of source pd perimeter of drain 周长,PS PD周长都不计算与栅极接触的部分 ps perimeter of source nrd 漏扩散区等效方块数 nrs 源扩散区等效方块数 sa ...

qq_40007892的博客 6555

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南

本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。

weixin_28835551的博客 560

判断整数序列是否为二元查找树后序遍历的结果

输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 分析: 根据后序遍历的特点可知,最后一个元素会把前面的元素分成两部分,前一部分小于它,后一部分大于或等于它。如果满足这个条件同时左右两部分也有这个性质,则该序列是二元查找树后序遍历的结果。整个过程是一个递归过程。 对于一个长度小于等于2的序列,一定是某一二元查找树后序遍历的结果,返回tr

bnufq的专栏 699

高斯-约当(Gauss-Jordan)消元法——c++代码实现

具体算法的详细原理请参照此篇博客:高斯-约当(Gauss-Jordan)消元法下面是具体c++代码,不保证程序最优化,提供一个可行的程序,供大家改进,同时感谢大家提意见。——大神勿喷呀,我是一个小菜鸟~void Guss_Jordan(int n,double *a)//阶数n 系数矩阵a { double*a_temp = new double[n*n * 2];//a与单位矩阵的组合

zwz的学习之路 6875

coding - 判断整数序列是不是二元查找树的后序遍历结果

题目描述: 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:     8     / \   6  10  / \     / \ 5 7 9 11 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回

星星之火 854

通俗解析:霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器的实战选型指南

本文深入解析了霍尔编码器、光电编码器、电位计、磁编码器和旋转变压器五大主流编码器的工作原理与核心特性。通过对比精度、环境耐受性、成本及寿命等关键维度,并结合消费电子、工业自动化、汽车电子及极端环境等典型应用场景,提供了一份清晰的实战选型指南,旨在帮助工程师根据具体需求,在性能、可靠性与成本间做出最优决策。

weixin_29216353的博客 254

安时积分法和开路电压法结合估算锂电池SOC

基于安时积分法和开路电压法结合的锂电池SOC估计Simulink仿真建模,利用安时积分法计算放电过程中的SOC,在搁置状态利用开路电压法进行SOC修正。

qq_39304296的博客 2561

第9题:判断整数序列是不是二元查找树的后序遍历结果

欢迎转载,转载请务必注明出处:http://blog.youkuaiyun.com/alading2009/article/details/44872143第9题:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 因此返回true。 如果输入7、4、6、5,没有哪棵

围炉夜话 1528

多agv系统调度的MATLAB仿真

从起点出发,到货物点领取货物最后到卸货点,以完成任务总时间最短为目标进行单目标优化,约束条件为,任务不冲突,路径不冲突,要能实现路径规避 ,4-6台agv一起工作。左右货架间隔可通过1个agv,上下货架间隔可通过两个agv,通道为双向行驶通道。一台agv只能带一个货物,优化目标为完成任务总的时间最短,agv的速度是匀速,转弯也不会减速,取货物时间为固定值。上面的图里面货物看为正方形跟agv一样的长度大小,agv试做是跟货物一样大小的正方形agv的速度是每秒1个车身。多台agv一起完成...

FPGA/MATLAB学习教程/源码/项目合作开发 7567

面试100题:9.判断整数序列是不是二元查找树的后序遍历结果

转载并参考July的博客http://topic.youkuaiyun.com/u/20101126/10/b4f12a00-6280-492f-b785-cb6835a63dc9.html,万分感谢! 题目: 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5, 7, 6, 9, 11, 10, 8,由于这一整数序列是如下树的后序遍

加油,码农! 641

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

微软100题第9题(判断整数序列是不是二元查找树的后序遍历结果)

1scala版本 package ms /** * 第9题(树) 判断整数序列是不是二元查找树的后序遍历结果 题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / / 6 10 / / /

mark's technic world 619

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IT公司100题-9-判断整数序列是不是二元查找树的后序遍历结果

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33928467的博客 87

输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:          8        /  \       6    10     / \    / \    5   7   9  11 因此返回true。 如果输入7、4、6、5,没有哪棵

Athenaer的专栏 3949

每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)

题目: 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果,如果是返回true,否则返回false。 例如: 输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:     8    / /   6  10  / /  / / 5 7 9 11 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false

yuucyf的专栏 4766

9、判断整数序列是不是二元查找树的后序遍历结果

第9 题判断整数序列是不是二元查找树的后序遍历结果题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:8/ \6 10/ \ / \5 7 9

SunDancer 707

判断该数组是不是某二元查找树的后序遍历的结果

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:           8         /   \        6     10      / \     / \     5    7    9   11 因此返回true。 如果输入7、4、6、5,没

guan_feng1988的专栏 994

java 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果

题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。 如果是返回true,否则返回false。 例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果:     8    / /   6  10 / / / / 5 7 9 11 因此返回true。 如果输入7、4、6、5,没有哪棵树的后序遍历的结果是这个序列,因此返回false。 最后

stonetudou的专栏 1415
上一篇: 2.设计包含min 函数的栈。
下一篇: 第10 题 翻转句子中单词的顺序。
Matrixlibing
博客等级 码龄14年 2粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值