/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return bool布尔型
*/
bool isSame(TreeNode* left, TreeNode* right) {
// 如果两个都是空
if(!left && !right) {
return true;
}
// 一个空,一个不是空
if (!left || !right) {
return false;
}
// 两个值不同
if (left->val != right->val) {
return false;
}
return isSame(left->left, right->right) && isSame(left->right, right->left);
// (left->left, right->right) && (left->right, right->left)
}
bool isSymmetric(TreeNode* root) {
// 如果是空梳子,true
if (!root) {
return true;
}
// 如果是叶子节点
if (!root->left && !root->right) {
return true;
}
// 如果有左无右,或有右无左, false
if (!root->left || !root->right) {
return false;
}
// 如果左右不相等,false
return isSame(root->left, root->right);
// 递归
// write code here
}
};