题目
题目来源
给定一个二叉树,检查它是否是镜像对称的。
思路
实际上根节点不用比较,只要存在即可,从根节点的左右节点开始比较,并使用递归比较左边的左节点-右边的右节点,以及左边的右键点-右边的左节点即可。
相关思考
(通过前两题的熏陶,终于不用看解答一次AC,感觉树入门了!快醒醒,这还是简单题呢555)
代码(C++/原创)
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
private:
bool compare(TreeNode *l,TreeNode* r)
{
if(l==nullptr&&r==nullptr) return true;
else if(l==nullptr||r==nullptr) return false;
else if(l->val!=r->val) return false;
return compare(l->left,r->right)&&compare(l->right,r->left);
}
public:
bool isSymmetric(TreeNode* root) {
if(root==nullptr) return true;
else return compare(root->left,root->right);
}
};