题目
思路
我们发现,一棵对称的二叉树具有以下特点:从根节点的左子树和右子树出发,左子树的左节点等于右子树的右节点,左子树的右节点等于右子树的左节点,即左 - 左=右 - 右,左 - 右=右 - 左,所以我们分别的递归比较这些节点
代码如下:
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if (root == NULL)
return true;
return isS(root->left, root->right);
}
bool isS(TreeNode* left, TreeNode* right) {
if ((left && !right) || (!left && right))return false;
if (!left && !right)return true;
if (left->val != right->val)return false;
return isS(left->left, right->right) && isS(left->right, right->left);
}
};