《剑指offer》对称的二叉树

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:[email protected]


题目链接:http://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb?rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking


题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。

思路
从根节点开始,递归判断其子树的对称性


/*
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)
		{
			return check(pRoot,pRoot);
		}
		bool check(TreeNode *pLeft,TreeNode *pRight)
		{
			if(pLeft==nullptr && pRight==nullptr)
				return true;
			if(pLeft==nullptr || pRight==nullptr)
				return false;
			if(pLeft->val != pRight->val)
				return false;
			return check(pLeft->left,pRight->right)&&check(pLeft->right,pRight->left);
		}

};


你可能感兴趣的:(剑指offer,牛客网)