解题思路:根节点左子树做个旋转则为右子树(旋转是指所有节点左右孩子进行调换)
则每次判断左子树下每个位置节点是否与右子树相对应位置相同。
class Solution {
public:
bool Reverse(TreeNode*node1,TreeNode*node2)
{
if(node1==NULL&&node2==NULL)
return true;
if(node1==NULL&&node2!=NULL)
return false;
if(node1!=NULL&&node2==NULL)
return false;
if(node1->val!=node2->val)
return false;
return (Reverse(node1->left,node2->right)&&Reverse(node1->right,node2->left));
}
bool isSymmetric(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(root==NULL)
return true;
if(Reverse(root->left,root->right))
return true;
return false;
}
};