1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <
malloc.h>
4 #include <
string.h>
5 #include <stdbool.h>
6 #include <math.h>
7 #define MAX 1500
8
9 struct TreeNode
10 {
11 int val;
12 struct TreeNode *
left;
13 struct TreeNode *
right;
14 };
15
16 typedef
struct seqqueue
17 {
18 struct TreeNode*
data[MAX];
19 int front;
20 int rear;
21 } seqqueue;
22
23 void enter(seqqueue *q,
struct TreeNode*
t)
24 {
25 q->data[q->rear] =
t;
26 q->rear++
;
27 }
28
29 struct TreeNode* del(seqqueue *
q)
30 {
31 if(q->front == q->
rear)
32 {
33 return NULL;
34 }
35 else
36 {
37 q->front++
;
38 return q->data[q->front-
1];
39 }
40 }
41
42 void level_tree(
struct TreeNode*
t)
43 {
44 seqqueue q;
45 struct TreeNode*
temp;
46 q.front = q.rear =
0;
47 if(!
t)
48 {
49 return ;
50 }
51 enter(&
q,t);
52 while(q.front !=
q.rear)
53 {
54 t=del(&
q);
55 printf(
"%d ",t->
val);
56 if(t->
left)
57 {
58 enter(&q,t->
left);
59 }
60 if(t->
right)
61 {
62 enter(&q,t->
right);
63 }
64 }
65 }
66
67 void exchange(
struct TreeNode *
root)
68 {
69 struct TreeNode *node =
root;
70 if(node !=
NULL)
71 {
72 struct TreeNode *temp = node ->
left;
73 node -> left = node ->
right;
74 node -> right =
temp;
75 }
76 }
77
78 struct TreeNode* invertTree(
struct TreeNode*
root)
79 {
80 struct TreeNode *node =
root;
81 if(root ==
NULL)
82 {
83 return root;
84 }
85 invertTree(node->
left);
86 invertTree(node->
right);
87 exchange(node);
88 return root;
89 }
90
91 int main()
92 {
93 int node_num;
94 while(~scanf(
"%d",&
node_num))
95 {
96 struct TreeNode *
node[node_num];
97 int i;
98 for(i =
0; i < node_num; i ++
)
99 {
100 node[i] =
malloc(
sizeof(
struct TreeNode));
101 scanf(
"%d",&node[i]->
val);
102 if(node[i]->val==-
1)
103 {
104 node[i] =
NULL;
105 continue;
106 }
107 node[i] -> left =
NULL;
108 node[i] -> right =
NULL;
109 }
110 for(i = node_num-
1; i >
0; i --
)
111 {
112 if(i &
0x1)
113 {
114 node[i/
2]->left =
node[i];
115 }
116 else
117 {
118 node[i/
2-
1]->right =
node[i];
119 }
120 }
121 struct TreeNode *root = invertTree(node[
0]);
122 level_tree(root);
123 printf(
"\n");
124 }
125 return 0;
126 }
转载于:https://www.cnblogs.com/Asurudo/p/9525382.html
相关资源:DLU2PIX对话框像素转换
转载请注明原文地址: https://win8.8miu.com/read-1450196.html