A1151
A1143
这两题题型差不多,1143是二叉排序树,而1151是一般树。
一般解法就是1.建树2.找出到节点的路径3.比较即可。
但是1143这样做的话,会导致内存超限,之前超限是因为在先序建树函数中穿入了数组导致的。
A1151:
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
int pre[100000];
int in[100000];
vector<int> tempPath;
vector<int> path;
struct Node {
int data;
Node* lch, *rch;
};
Node* CreatTree(int inL, int inR, int preL, int preR) {
if (preL > preR) {
return NULL;
}
Node *Root = new Node;
Root->data = pre[preL];
int k;
for (k = inL; k <= inR; k++) {
if (in[k] == pre[preL])
break;
}
int numleft = k - inL;
Root->lch = CreatTree(inL, k -