题目描述: 给定一个二叉树,检查它是否是镜像对称的。
解题思路: 利用递归来解决,利用ismirror分别判断两个节点,若同时不存在则是镜像的,若只有一个存在则判否,若都存在则递归判断各自子树。一开始传入根结点,若根结点为空,则也是对称二叉树。
/** * 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) { return ismirror(root,root); } bool ismirror(TreeNode* root1,TreeNode* root2){ if(!root1&&!root2){ return true; } if((!root1)||(!root2)){ return false; } if(root1&&root2){ if (root1->val==root2->val){ return ismirror(root1->left,root2->right)&&ismirror(root1->right,root2->left); } } return false; } };