50220. Ternary Tree Isomorphic
難度:3.5/5
Second Try: 3/5 Used Time 13:351
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37#include <stdio.h>
#include <stdbool.h>
#include "isIsomorphic.h"
#define f isIsomorphic
// struct TreeNode {
// struct TreeNode *left;
// struct TreeNode *mid;
// struct TreeNode *right;
// };
//
// typedef struct TreeNode TreeNode;
bool isIsomorphic(TreeNode* a, TreeNode* b){
if(a == NULL && b == NULL) return true;
else if(a == NULL || b == NULL) return false;
bool ll = f(a->left, b->left);
bool lm = f(a->left, b->mid);
bool lr = f(a->left, b->right);
bool ml = f(a->mid, b->left);
bool mm = f(a->mid, b->mid);
bool mr = f(a->mid, b->right);
bool rl = f(a->right, b->left);
bool rm = f(a->right, b->mid);
bool rr = f(a->right, b->right);
bool lmr = (ll && mm && rr);
bool lrm = (ll && mr && rm);
bool mlr = (lm && ml && rr);
bool mrl = (lm && mr && rl);
bool rlm = (lr && ml && rm);
bool rml = (lr && mm && rl);
return lmr || lrm || mlr || mrl || rlm || rml;
}