思路
采用递归的思想,逐层判断是否对称。
代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
bool isSymmetric(TreeNode* root) {
if(!root) return true;
return rec(root -> left, root -> right);
}
bool rec(TreeNode* l, TreeNode* r){
if(l == NULL && r == NULL) return true;
if(l == NULL || r == NULL) return false;
return (l -> val == r -> val) //对应node的值要相同
&& (rec(l -> left, r ->right)) //左节点的左子节点和右节点的右子节点
&& (rec(r -> left, l -> right)); //右节点的左子节点和左节点的右子节点
}
};