使用递归应该是最简单的解法了:

运行时间 3ms,内存占用 424 KB

class Solution {
public:
    bool judge(TreeNode* a, TreeNode*b){
        if(a==b) return true;
        if(!a) return false;
        if(!b) return false;
        return a->val==b->val && judge(a->right, b->left)&&judge(a->left, b->right);
    }
    bool isSymmetric(TreeNode* root) {
        // write code here
        if(!root) return true;
        return judge(root->left, root->right);
    }
};

感觉代码写的比第一名写的还简洁,为什么运行速度要 3ms 呢。拿来第一名的代码跑,也是要 3ms,大概是服务器的问题吧