#include <bits/stdc++.h>
using namespace std;
int n;
int a[21], b[21], e[21], f[21];
int ans = 1, bns = 1, nn;
struct node
{
int data, sen;
struct node *ls, *rs;
} tr;
typedef struct node *List;
int high(List root)
{
if (root)
{
return max(high(root->ls), high(root->rs)) + 1;
}
else
return 0;
}
List build(int len, int mid[], int net[], int sen)
{
List root;
if (len == 0)
{
root = NULL;
return root;
}
int i;
root = (List)malloc(sizeof(List));
root->data = net[len - 1];
for (i = 0; i < len; i++)
{
if (mid[i] == net[len - 1])
break;
}
root->ls = build(i, mid, net, sen + 1);
root->rs = build(len - i - 1, mid + i + 1, net + i, sen + 1);
root->sen = sen;
return root;
}
void qj(List root)
{
List d[10000];
List t;
int i = 0, j = 0;
if (root)
{
d[i++] = root;
while (i != j)
{
t = d[j++];
f[t->sen]++;
e[t->data] = f[t->sen];
if (t->ls)
d[i++] = t->ls;
if (t->rs)
d[i++] = t->rs;
}
cout << "R:";
i = 0;
ans = 0;
while (ans < nn)
{
t = d[i++];
if (e[t->data] == f[t->sen])
{
cout << " " << t->data;
ans++;
}
}
cout << endl;
cout << "L:";
i = 0, j = 1;
List q;
int ans = 0;
while (ans < nn)
{
t = d[i++];
if (e[t->data] == 1)
{
cout << " " << t->data;
ans++;
}
}
}
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
for (int i = 0; i < n; i++)
cin >> b[i];
List root = build(n, a, b, 1);
nn = high(root);
qj(root);
}
pta 7-5 浪漫侧影
最新推荐文章于 2024-07-26 10:10:33 发布