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.

 递归:

/**

 * 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 check(TreeNode *A, TreeNode * B)

    {

        if(A == NULL && B == NULL) return true;

        if(A == NULL || B == NULL) return false;

        if(A->val != B->val) return false;

  

        return check(A->left, B->right) && check(A->right , B->left) ;

    }

    bool isSymmetric(TreeNode *root) {

        // Start typing your C/C++ solution below

        // DO NOT write int main() function

        return check(root, root) ;

    }

};

 

你可能感兴趣的:(LeetCode)