给出后序中序,转成前序,root根节点
void pre(int root, int start, int end) {
if(start > end) return ;
int i = start;
while(i < end && in[i] != post[root]) i++;
printf("%d ", post[root]);
pre(root - 1 - end + i, start, i - 1);
pre(root - 1, i + 1, end);
}
给出前序后序,转成后序
void pos(int root, int start, int end) {
if(start > end) return ;
int i = start;
while(i < end && in[i] != pre[root]) i++;
pos(root+1, start, i - 1);
pos(root+(i-start+1), i + 1, end);
printf("%d ", pre[root]);
}