Skip to content

Commit

Permalink
-
Browse files Browse the repository at this point in the history
  • Loading branch information
liuchuo committed Apr 14, 2020
1 parent 92142b8 commit 01b1c04
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 36 deletions.
32 changes: 12 additions & 20 deletions AdvancedLevel_C++/1020. Tree Traversals (25).cpp
Original file line number Diff line number Diff line change
@@ -1,20 +1,14 @@
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
#include <map>
using namespace std;
struct node {
int index, value;
};
bool cmp(node a, node b) {
return a.index < b.index;
}
vector<int> post, in;
vector<node> ans;
map<int, int> level;
void pre(int root, int start, int end, int index) {
if (start > end) return;
if(start > end) return ;
int i = start;
while (i < end && in[i] != post[root]) i++;
ans.push_back({index, post[root]});
while(i < end && in[i] != post[root]) i++;
level[index] = post[root];
pre(root - 1 - end + i, start, i - 1, 2 * index + 1);
pre(root - 1, i + 1, end, 2 * index + 2);
}
Expand All @@ -23,13 +17,11 @@ int main() {
scanf("%d", &n);
post.resize(n);
in.resize(n);
for (int i = 0; i < n; i++) scanf("%d", &post[i]);
for (int i = 0; i < n; i++) scanf("%d", &in[i]);
pre(n - 1, 0, n - 1, 0);
sort(ans.begin(), ans.end(), cmp);
for (int i = 0; i < ans.size(); i++) {
if (i != 0) cout << " ";
cout << ans[i].value;
}
for(int i = 0; i < n; i++) scanf("%d", &post[i]);
for(int i = 0; i < n; i++) scanf("%d", &in[i]);
pre(n-1, 0, n-1, 0);
auto it = level.begin();
printf("%d", it->second);
while(++it != level.end()) printf(" %d", it->second);
return 0;
}
7 changes: 2 additions & 5 deletions CCCC-GPLT/L2-002. ι“Ύθ‘¨εŽ»ι‡.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@
using namespace std;
const int maxn = 100000;
struct NODE {
int address;
int key;
int next;
int num;
int address, key, next, num;
}node[maxn];
bool exist[maxn];
int cmp1(NODE a, NODE b){
Expand Down Expand Up @@ -45,4 +42,4 @@ int main() {
}
}
return 0;
}
}
18 changes: 7 additions & 11 deletions CCCC-GPLT/L2-006. ζ ‘ηš„ιεŽ†.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#include <cstdio>
#include <vector>
#include <map>
using namespace std;
vector<int> post, in, level(100000, -1);
vector<int> post, in;
map<int, int> level;
void pre(int root, int start, int end, int index) {
if(start > end) return ;
int i = start;
Expand All @@ -11,21 +13,15 @@ void pre(int root, int start, int end, int index) {
pre(root - 1, i + 1, end, 2 * index + 2);
}
int main() {
int n, cnt = 0;
int n;
scanf("%d", &n);
post.resize(n);
in.resize(n);
for(int i = 0; i < n; i++) scanf("%d", &post[i]);
for(int i = 0; i < n; i++) scanf("%d", &in[i]);
pre(n-1, 0, n-1, 0);
for(int i = 0; i < level.size(); i++) {
if(level[i] != -1 && cnt != n - 1) {
printf("%d ", level[i]);
cnt++;
} else if(level[i] != -1){
printf("%d", level[i]);
break;
}
}
auto it = level.begin();
printf("%d", it->second);
while(++it != level.end()) printf(" %d", it->second);
return 0;
}

0 comments on commit 01b1c04

Please sign in to comment.