题目描述
判断两序列是否为同一二叉搜索树序列
输入
开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
输出
如果序列相同则输出YES,否则输出NO
样例输入
6 45021 12045 54120 45021 45012 21054 50412 0
样例输出
NO NO YES NO NO NO
对于每个序列先建立二叉查找树,然后求出原始序列的先序中序和后序,和每个给的序列的先中后序,如果前三序和后三序都相同,则说明这两个序列是同一个二叉查找树。
小技巧:vector型的数据可以直接比较大小,比建立int数组逐个比较方便。
#include<stdio.h>
#include<vector>
#include<string.h>
#include<algorithm>
#include<map>
using namespace std;
struct node
{
int data;
node *lchild, *rchild;
};
int n;
void insert(node *&root, int data)