BINTREE - Duyệt cây nhị phân

Tác giả: flashmt

Ngôn ngữ: C++

#include <cstdio>
using namespace std;

int n,preOrder[50100],inOrder[50100],pos[50100];

void postOrder(int l,int r,int ll,int rr)
{
	int x=pos[preOrder[l]];
	if (x>ll) postOrder(l+1,l+x-ll,ll,x-1);
	if (x<rr) postOrder(r-rr+x+1,r,x+1,rr);
	printf("%d ",preOrder[l]);
}

int main()
{
	int x;
	scanf("%d",&n);
	for (int i=0;i<n;i++) scanf("%d",&preOrder[i]);
	for (int i=0;i<n;i++) scanf("%d",&x), pos[x]=i;
	postOrder(0,n-1,0,n-1);
}

Download