leetcode-101-symmetric tree

Problem Description:

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).

For example, this binary tree [1,2,2,3,4,4,3] is symmetric:

    1
   / 
  2   2
 /  / 
3  4 4  3

But the following [1,2,2,null,3,null,3] is not:
1
/
2 2

3 3

题目大意:

给定一棵树,检查它是否是中心对称的。

Solutions:

很简单,运用一个辅助函数检查两棵树是否对称即可。

Code in C++:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if(!root) return true;
        return isM(root->left,root->right);

    }
    bool isM(TreeNode* a,TreeNode* b)
    {
        if(!a&&!b) return true;
        if((a&&!b)||(b&&!a)) return false;
        if(a->val!=b->val) return false;
        return isM(a->left,b->right)&&isM(a->right,b->left);
    }
};