[LeetCode] Symmetric Tree

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

For example, this binary tree is symmetric:

    1
   / \
  2   2
 / \ / \
3  4 4  3

But the following is not:

    1
   / \
  2   2
   \   \
   3    3

Note:
Bonus points if you could solve it both recursively and iteratively.

class Solution {
public:
    bool isSymmetric(TreeNode *root) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(root==NULL) return true;
        return isSym(root->left,root->right);   
    }
    
    bool isSym(TreeNode *t1, TreeNode *t2)
    {
        if(t1==NULL && t2==NULL) {return true;}
        if(t1==NULL && t2!=NULL) {return false;}
        if(t2==NULL && t1!=NULL) {return false;}
        
        if(t1->val != t2-> val) {return false;}
        bool left=isSym(t1->left, t2->right);
        bool right=isSym(t1->right, t2->left);
        if(left*right == 1)
            return true;
        else
            return false;
            
    }
};


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