BUPT复试专题—中序遍历序列(2013)
题目描述
给出一个序列,判断该序列是不是某二叉搜索树的中序遍历序列,如果是输出"Yes",否则输出"No"。
一颗带权二叉树是一颗二叉搜索树(二叉排序树),当且仅当对于任意一个节点,他的左子树中的所有权值小于当前节点的权值,且它的右子树中的所有权值均大于当前节点的权值。
输入
第一行代表数据组数。
每组数据包括两行:
第一行为一个整数,表示序列的长度。
第二行包含个整数,表示这个这个序列,序列中的数的范围
输出
每组数据,如果是二叉搜索树的中序遍历序列输出"Yes",否则输出"No"。
样例输入
2
4
1 2 3 4
4
1 3 2 4
样例输出
Yes
No
来源
#include<iostream> #include<cstdio> #include<algorithm> #include<string> using namespace std; int main() { int T; cin>>T; while(T--) { int m,x,y,lable=0; cin>>m; cin>>x; m--; while(m--) { cin>>y; if(x>=y) lable=1; x=y; } if(!lable) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }