/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 * @return bool布尔型 */ bool isSymmetric(TreeNode* root) { // write code here if(!root) // 判定特例 return true; return function(root->left, root->right); } bool function(TreeNode* left, TreeNode* right) { if(!left && !right) // 当左右节点都为空时 return true; if((!left || !right) || (left->val != right->val)) // 当左右节点有一个不为空,或者两者值不相等时 return false; // 判断左节点的右节点和右节点的左节点,左节点的左节点和右节点的右节点 return function(left->right, right->left) && function(left->left, right->right); } };