题目描述
思路分析
二叉树+递归。
递归定义:一棵树是对称的 等价于 左右子树是对称的。
代码实现
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
bool isSymmetrical(TreeNode* root) {
if(!root) return true;
return dfs(root->left,root->right);
}
bool dfs(TreeNode* p,TreeNode* q){
if(!p||!q) return !p&&!q;
if(p->val!=q->val) return false;
return dfs(p->left,q->right)&&dfs(p->right,q->left);
}
};