Skip to content

Commit 5b54484

Browse files
Symmetric tree
Signed-off-by: Leo Ma <begeekmyfriend@gmail.com>
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy