day15
重要的是:确定遍历的顺序
后序
因为要先知道左右子树是否对称,再返还给根节点
将是否对称分为 外部是否对称,和 内部是否对称
外部:左子树的左孩子 和 右子树的右孩子
内部:左子树的右孩子 和 右子树的左孩子
class Solution {
public:
bool compare(TreeNode* left,TreeNode* right)
{
if(left == nullptr && right != nullptr) return false;
else if(left != nullptr && right == nullptr) return false;
else if(left == nullptr && right == nullptr) return true;
else if(left->val != right->val) return false;
bool outside = compare(left->left,right->right);
bool inside = compare(left->right,right->left);
bool res = outside && inside;
return res;
}
bool isSymmetric(TreeNode* root) {
if(root == nullptr)
return true;
bool res = compare(root->left,root->right);
return res;
}
};