如题。
代码示例
vector<int> pre, post;
void getPost(int root, int tail)
{
if(root > tail)
return;
int i = root+1, j=tail;
while(i<=tail && pre[i] < pre[root])
++i;
while(root<j && pre[j] >= pre[root])
--j;
if(i-j != 1)//左右子树序列不相邻,必是无效的序列
return;
getPost(root+1, j);
getPost(i, tail);
post.push_back(pre[root]);
}
int main()
{
getPost(0, n-1);
return 0;
}