题目描述:
示例 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);
}
如有错误欢迎批评指正,第一次写题解,可能有很多不足之处。