当左子节点和右子节点都为空时,对称;当左子节点和右子节点一个为空一个不为空时,不对称;当左子节点和右子节点都不为空时,如果两者的值相等则对称,否则递归外侧和内侧的结点,递归判断。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return bool布尔型
*/
bool compare(TreeNode* left_node,TreeNode* right_node){
if(left_node==nullptr && right_node==nullptr) return true;
else if(left_node==nullptr && right_node!=nullptr) return false;
else if(left_node!=nullptr && right_node==nullptr) return false;
else{
if(left_node->val == right_node->val){
bool outside=compare(left_node->left,right_node->right);
bool inside=compare(left_node->right,right_node->left);
return outside && inside;
}
else return false;
}
}
bool isSymmetric(TreeNode* root) {
if(root==nullptr) return true;
bool result=compare(root->left, root->right);
return result;
}
};