PTA1043:BST算法题解析
题目以及样例
链接: link.
- 题目
- 输入输出样例
题目分析
这是一道二叉搜索树的典型题(个人觉得有些难度),即根据二叉搜索树的性质,以及给定的输入序列,判断这个序列是否可为一个二叉搜索树(或者其镜像二叉搜索树:也就是每一个子树的左右节点互换位置)的前序遍历序列。
解题思路
首先定义以下全局变量:
vector<int> pre; //输入,也即是前序遍历序列
bool ismirror; //当输入为true时,为二叉搜索树的镜像
bool isbst=true; //是否为BST(二叉搜索树),初始为true
vector<int> post; //用于存放后序遍历结果
接下来主函数框架如下:
int main(int argc, char * argv[])
{
int n;
scanf("%d",&n); //n个树的节点
for(int i=0;i<n;i++)
{
int a;
scanf("%d",&a);
pre.push_back(a)