题目描述

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
 
/*
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+镜面对称+递归)

 

(剑指Offer)面试题59:对称的二叉树

 

 

 

posted on 2017-08-31 17:00  王小东大将军  阅读(113)  评论(0编辑  收藏  举报