利用pre[ ]与 in[ ]向左子树深入,直至NULL,输入左侧最深层的节点
#include<iostream>
using namespace std;
int n, pre[50005], in[50005];
int flag = 0;
void creat(int l1,int r1,int l2,int r2)
{
if (l1 > r1||flag) return;
int i = l2;
for (;i <= r2;i++)
if (in[i] == pre[l1]) break;
creat(l1 + 1, l1 + i - l2, l2, i - 1);
creat(l1 + i - l2 + 1, r1, i + 1, r2);
if (!flag)
cout << pre[l1], flag = 1;
}
int main()
{
cin >> n;
for (int i = 1;i <= n;i++) cin >> pre[i];
for (int i = 1;i <= n;i++) cin >> in[i];
creat(1, n, 1, n);
system("pause");
return 0;
}