#include <stdbool.h>
bool isSame(struct TreeNode* root1, struct TreeNode* root2)
{
    if(root1 == NULL && root2 == NULL)
        return true;
    if(root1 == NULL || root2 == NULL)
        return false;
    if(root1->val != root2->val)
        return false;
    return isSame(root1->left, root2->right) && isSame(root1->right , root2->left);
}

bool isSymmetrical(struct TreeNode* pRoot ) {
    return isSame(pRoot, pRoot);
}
1.左右是否均为空。均为空表示对称。
2.除开1的情况,左右是否有一个为空。只要有一个为空,则必不对称。
3.除开1,2的情况,那么左右必均不为空,那么检查值是否相等,不相等则必不对称。
4.除开1,2,3的情况,那么左右两个值相等,就继续判断其左右孩子是否对称,
  即左边的左孩子与右边的右孩子是否相等,左边的右孩子和右边的左孩子是否相等。相等则对称