题目
题目描述
给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)
例如:下面这棵二叉树是对称的
1
/ \
2 2
/ \ / \
3 4 4 3
下面这棵二叉树不对称。
1
/ \
2 2
\ \
3 3
备注:
希望你可以用递归和迭代两种方法解决这个问题
解析
只需要区分好边界条件,每次比对val值即可;
只有当两个节点都存在才可以比对val,不一样返回false;
只存在一个节点时返回false;
两个节点都不存在时返回true;
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
bool reSymmetric(TreeNode *left,TreeNode *right){
if(left==nullptr&&right==nullptr)return true;
else if(left==nullptr||right==nullptr)return false;
if(left->val!=right->val)return false;
return reSymmetric(left->left, right->right)&&reSymmetric(left->right, right->left);
}
/**
*
* @param root TreeNode类
* @return bool布尔型
*/
bool isSymmetric(TreeNode* root) {
// write code here
return reSymmetric(root,root);
}
};