Skip to content

Commit 5b54484

Browse files
Symmetric tree
Signed-off-by: Leo Ma <[email protected]>
1 parent 0945258 commit 5b54484

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

050_pow/pow.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ static double my_pow(double x, int n)
4141

4242
int main(int argc, char **argv)
4343
{
44+
if (argc != 3) {
45+
fprintf(stderr, "Usage: ./test x n\n");
46+
exit(-1);
47+
}
4448
printf("%lf\n", my_pow(atoi(argv[1]), atoi(argv[2])));
4549
return 0;
4650
}

101_symmetric_tree/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
all:
2+
gcc -O2 -o test symmetric_tree.c

101_symmetric_tree/symmetric_tree.c

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
#include <stdbool.h>
4+
5+
struct TreeNode {
6+
int val;
7+
struct TreeNode *left;
8+
struct TreeNode *right;
9+
};
10+
11+
static bool traverse(struct TreeNode *left, struct TreeNode *right)
12+
{
13+
if (left == NULL && right == NULL) {
14+
return true;
15+
}
16+
17+
if (left == NULL || right == NULL) {
18+
return false;
19+
}
20+
21+
if (left->val != right->val) {
22+
return false;
23+
}
24+
25+
return traverse(left->left, right->right) && traverse(left->right, right->left);
26+
}
27+
28+
bool isSymmetricTree(struct TreeNode* root)
29+
{
30+
if (root == NULL) {
31+
return true;
32+
}
33+
34+
return traverse(root->left, root->right);
35+
}
36+
37+
int main(void)
38+
{
39+
#if 1
40+
struct TreeNode root, n10, n11, n20, n21, n22, n23;
41+
root.val = 1;
42+
n10.val = 2;
43+
n11.val = 2;
44+
n20.val = 3;
45+
n21.val = 4;
46+
n22.val = 4;
47+
n23.val = 3;
48+
root.left = &n10;
49+
root.right = &n11;
50+
n10.left = &n20;
51+
n10.right = &n21;
52+
n11.left = &n22;
53+
n11.right = &n23;
54+
n20.left = NULL;
55+
n20.right = NULL;
56+
n21.left = NULL;
57+
n21.right = NULL;
58+
n22.left = NULL;
59+
n22.right = NULL;
60+
n23.left = NULL;
61+
n23.right = NULL;
62+
#else
63+
struct TreeNode root, n10, n11, n21, n22;
64+
root.val = 1;
65+
n10.val = 2;
66+
n11.val = 2;
67+
n21.val = 3;
68+
n22.val = 4;
69+
root.left = &n10;
70+
root.right = &n11;
71+
n10.left = NULL;
72+
n10.right = &n21;
73+
n11.left = &n22;
74+
n11.right = NULL;
75+
n21.left = NULL;
76+
n21.right = NULL;
77+
n22.left = NULL;
78+
n22.right = NULL;
79+
#endif
80+
81+
printf("%s\n", isSymmetricTree(&root) ? "true" : "false");
82+
return 0;
83+
}

0 commit comments

Comments
 (0)