本内容来自代码随想录
使用后序遍历。
class Solution {
public:
bool traversal(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 out = traversal(left->left,right->right);
bool in = traversal(left->right,right->left);
return out&∈
}
bool isSymmetric(TreeNode* root) {
if(root == nullptr) return true;
bool issym = traversal(root->left,root->right);
return issym;
}
};