Skip to content

Commit 01b1c04

Browse files
committed
-
1 parent 92142b8 commit 01b1c04

File tree

3 files changed

+21
-36
lines changed

3 files changed

+21
-36
lines changed
Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
1-
#include <iostream>
2-
#include <algorithm>
1+
#include <cstdio>
32
#include <vector>
3+
#include <map>
44
using namespace std;
5-
struct node {
6-
int index, value;
7-
};
8-
bool cmp(node a, node b) {
9-
return a.index < b.index;
10-
}
115
vector<int> post, in;
12-
vector<node> ans;
6+
map<int, int> level;
137
void pre(int root, int start, int end, int index) {
14-
if (start > end) return;
8+
if(start > end) return ;
159
int i = start;
16-
while (i < end && in[i] != post[root]) i++;
17-
ans.push_back({index, post[root]});
10+
while(i < end && in[i] != post[root]) i++;
11+
level[index] = post[root];
1812
pre(root - 1 - end + i, start, i - 1, 2 * index + 1);
1913
pre(root - 1, i + 1, end, 2 * index + 2);
2014
}
@@ -23,13 +17,11 @@ int main() {
2317
scanf("%d", &n);
2418
post.resize(n);
2519
in.resize(n);
26-
for (int i = 0; i < n; i++) scanf("%d", &post[i]);
27-
for (int i = 0; i < n; i++) scanf("%d", &in[i]);
28-
pre(n - 1, 0, n - 1, 0);
29-
sort(ans.begin(), ans.end(), cmp);
30-
for (int i = 0; i < ans.size(); i++) {
31-
if (i != 0) cout << " ";
32-
cout << ans[i].value;
33-
}
20+
for(int i = 0; i < n; i++) scanf("%d", &post[i]);
21+
for(int i = 0; i < n; i++) scanf("%d", &in[i]);
22+
pre(n-1, 0, n-1, 0);
23+
auto it = level.begin();
24+
printf("%d", it->second);
25+
while(++it != level.end()) printf(" %d", it->second);
3426
return 0;
3527
}

CCCC-GPLT/L2-002. 链表去重.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
using namespace std;
55
const int maxn = 100000;
66
struct NODE {
7-
int address;
8-
int key;
9-
int next;
10-
int num;
7+
int address, key, next, num;
118
}node[maxn];
129
bool exist[maxn];
1310
int cmp1(NODE a, NODE b){
@@ -45,4 +42,4 @@ int main() {
4542
}
4643
}
4744
return 0;
48-
}
45+
}

CCCC-GPLT/L2-006. 树的遍历.cpp

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
#include <cstdio>
22
#include <vector>
3+
#include <map>
34
using namespace std;
4-
vector<int> post, in, level(100000, -1);
5+
vector<int> post, in;
6+
map<int, int> level;
57
void pre(int root, int start, int end, int index) {
68
if(start > end) return ;
79
int i = start;
@@ -11,21 +13,15 @@ void pre(int root, int start, int end, int index) {
1113
pre(root - 1, i + 1, end, 2 * index + 2);
1214
}
1315
int main() {
14-
int n, cnt = 0;
16+
int n;
1517
scanf("%d", &n);
1618
post.resize(n);
1719
in.resize(n);
1820
for(int i = 0; i < n; i++) scanf("%d", &post[i]);
1921
for(int i = 0; i < n; i++) scanf("%d", &in[i]);
2022
pre(n-1, 0, n-1, 0);
21-
for(int i = 0; i < level.size(); i++) {
22-
if(level[i] != -1 && cnt != n - 1) {
23-
printf("%d ", level[i]);
24-
cnt++;
25-
} else if(level[i] != -1){
26-
printf("%d", level[i]);
27-
break;
28-
}
29-
}
23+
auto it = level.begin();
24+
printf("%d", it->second);
25+
while(++it != level.end()) printf(" %d", it->second);
3026
return 0;
3127
}

0 commit comments

Comments
 (0)