Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <string.h>
- #include <ctype.h>
- #pragma warning(disable:4996)
- typedef long long s64, LL;
- typedef unsigned long long u64, ULL;
- typedef struct treenode{
- int l, r, data;
- }treenode;
- treenode nodes[114514] = { 0 };
- void dfs1(int root){
- if(nodes[root].data){
- printf("%d ", nodes[root].data);
- if(nodes[root].l){
- dfs1(nodes[root].l);
- }
- if(nodes[root].r){
- dfs1(nodes[root].r);
- }
- }
- else{
- return;
- }
- }
- void dfs2(int root){
- if(nodes[root].data){
- if(nodes[root].l){
- dfs2(nodes[root].l);
- }
- printf("%d ", nodes[root].data);
- if(nodes[root].r){
- dfs2(nodes[root].r);
- }
- }
- else{
- return;
- }
- }
- void dfs3(int root){
- if(nodes[root].data){
- if(nodes[root].l){
- dfs3(nodes[root].l);
- }
- if(nodes[root].r){
- dfs3(nodes[root].r);
- }
- printf("%d ", nodes[root].data);
- }
- else{
- return;
- }
- }
- int main(){
- int i, n;
- scanf("%d", &n);
- for(i = 1; i < (1 << (n - 1)); i++){
- nodes[i].l = i << 1;
- nodes[i].r = (i << 1) | 1;
- }
- for(i = 1; i < (1 << n); i++){
- scanf("%d", &nodes[i].data);
- }
- dfs1(1);
- putchar('\n');
- dfs2(1);
- putchar('\n');
- dfs3(1);
- putchar('\n');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement