今日碎碎念: 穷且无聊的人最深情,说的就是我。
题目描述
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
解题分析
镜像二叉树
如果一个二叉树是对称的,那么关键是比较左子树的左孩子和右子树的右孩子,左子树的右孩子和右子树的左孩子是否相等。
代码实现
/*
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* pRoot1,TreeNode* pRoot2)
{
if(!pRoot1 and !pRoot2) return true;
else if(!pRoot1 or !pRoot2) return false;
else{
return pRoot1->val==pRoot2->val and isSame(pRoot1->left,pRoot2->right)
and isSame(pRoot2->left,pRoot1->right);
}
}
bool isSymmetrical(TreeNode* pRoot)
{
return isSame(pRoot,pRoot);
}
};
结果