题目考查的知识点

  • 递归遍历二叉树

题目解答方法的文字解析

  1. 判断root节点是否仅存在一个孩子的情况,是则返回false
  2. 如果root存在左右孩子,判断左右孩子的值是否相等,否则返回false
  3. 递归,遍历左右子树是否是对称的

本题解析所用的编程语言

  • c++

完整且正确的编程代码

class Solution {
public:
    bool isSymmetric(TreeNode* root) {
        if (!root)return true;
        else return helper(root->left, root->right);
    }
    bool helper(TreeNode* lhs, TreeNode* rhs) {
        if (!lhs)return rhs == nullptr;
        else if (!rhs)return lhs == nullptr;
        if (lhs->val != rhs->val)return false;
        return helper(lhs->left, rhs->right) & helper(lhs->right, rhs->left);
    }
};