题目描述:
示例 1:
输入:root = [6,7,7,8,9,9,8] 输出:true 解释:从图中可看出树是轴对称的。示例 2:
输入:root = [1,2,2,null,3,null,3] 输出:false 解释:从图中可看出最后一层的节点不对称。提示:
0 <= 节点个数 <= 1000
首先分析一下这道题:
对于对称二叉树,既要求结构相同,也要保证每一个对称节点中的值相同,因此我们就可以将根节点的左子树与右子树比较,看看是否相等
代码实现:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
bool traversal(struct TreeNode*left,struct TreeNode*right){
if(right==NULL&&left==NULL){
return true;
}
if((right==NULL&&left!=NULL)||(right!=NULL&&left==NULL)){
return false;
}
if(right->val!=left->val){
return false;
}
return traversal(left->left,right->right)&&traversal(left->right,right->left);
}
bool checkSymmetricTree(struct TreeNode* root) {
if(root==NULL){
return true;
}
return traversal(root->left,root->right);
}
如有错误欢迎批评指正,第一次写题解,可能有很多不足之处。