PTA 进阶实验4-3.4 笛卡尔树
题目链接
思路:
1.先找到根节点,用vis记录节点是否是其他节点的左儿子或右儿子,是则标记,没被标记过的节点就是根节点
2.二叉搜索树的中序遍历的key值是从小到大有序排列的,所以用中序遍历遍历一次树得到中序遍历数组,检查数组是否是从小到大有序排列的。
3.中序遍历的同时检查K2值,只要在每次递归时将父节点的K2值传入,与子树的K2作比较就行。
代码如下:
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
const int MAX = 1e3 + 1;
bool vis[MAX];
vector<int>Q;
struct Tree {
int k1, k2;
int l, r;
Tree(int a, int b, int c, int d) {
k1 = a; k2 = b; l