struct Node{
int val;
Node* left;
Node* right;
Node* mid;
}
bool isSymmetric(Node* tree){
if(tree == NULL) return true;
return isSame(tree->left, tree->right) &&
isSymmetric(tree->mid);
}
bool isSame(Node* left, Node* right){
if(left == NULL && right == NULL) return true;
if(left == NULL || right == NULL) return false;
return left->val == right->val &&
isSame(left->left, right->right) &&
isSame(left->right, right->left) &&
isSame(left->mid, right->mid);
}