/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    bool isSymmetrical(TreeNode* rt) {
        if(!rt) return true;
        return check(rt->left,rt->right);
    }


    bool check(TreeNode* l,TreeNode* r){
        if(l&&r){
            if(l->val==r->val) return check(l->left,r->right)&&check(l->right,r->left);
            return false;
        }else if(!l&&!r) return true;
        return false;
    }
};