描述
给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如:下面这棵二叉树是对称的
下面这棵二叉树不对称。
数据范围:节点数满足0≤n≤1000,节点上的值满足∣val∣≤1000
要求:空间复杂度 O(n),时间复杂度 O(n)
备注:你可以用递归和迭代两种方法解决这个问题
示例1
输入:{1,2,2,3,4,4,3}
返回值:true
示例2
输入:{8,6,9,5,7,7,5}
返回值:false
代码
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
bool isSame(TreeNode *root1,TreeNode *root2){
if(!root1&&!root2)
return true;
if(!root1||!root2)
return false;
if(root1->val!=root2->val)
return false;
return isSame(root1->left, root2->right)&&isSame(root1->right, root2->left);
}
bool isSymmetrical(TreeNode* pRoot) {
return isSame(pRoot,pRoot);
}
};