题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
bool isSymmetrical(TreeNode* pRoot)
{
if(pRoot==NULL) return true;
TreeNode * pRight=pRoot->right;
TreeNode * pLeft=pRoot->left;
if(pRight==NULL && pLeft==NULL) return true;
if(pRight==NULL || pLeft==NULL) return false;
return f(pRight,pLeft);
}
bool f(TreeNode * pLroot,TreeNode * pRroot) {
if(pLroot==NULL && pRroot==NULL) return true;
if(pLroot==NULL || pRroot==NULL) return false;
if(pLroot->val!=pRroot->val) return false;
TreeNode * pL1=pLroot->left;
TreeNode * pL2=pLroot->right;
TreeNode * pR1=pRroot->left;
TreeNode * pR2=pRroot->right;
return f(pL1,pR2)&&f(pL2,pR1);
}
};
(剑指Offer)面试题59:对称的二叉树
拥抱明天!
不给自己做枷锁去限制自己。
别让时代的悲哀,成为你人生的悲哀。

浙公网安备 33010602011771号