[Leetcode] Symmetric Tree

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSymmetric(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if (!root) return true;
        
        return isEqual(root->left, root->right);
    }
    
    bool isEqual(TreeNode* n1, TreeNode* n2)
    {
        if (n1 && n2)
        {
            if (n1->val == n2->val)
                return isEqual(n1->left, n2->right) && isEqual(n1->right, n2->left);
            else 
                return false;
        }
        else if (!n1 && !n2)
            return true;
        else 
            return false;
    }

};

你可能感兴趣的:([Leetcode] Symmetric Tree)