对称的二叉树
时间限制:1秒 空间限制:32768K |
题目描述
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 |
题目分析
对称二叉树 1 2 2 4 5 5 4 |
非对称二叉树 1 2 2 4 5 4 5 | |
判断一颗二叉树是否为对称二叉树,可以采用递归的思想实现。
|
代码实现
/*
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;
return isSameTree(pRoot->left, pRoot->right);
}
bool isSameTree(TreeNode*pRoot1, TreeNode*pRoot2)
{
if(pRoot1 == NULL)
return pRoot2 == NULL;
if(pRoot2 == NULL)
return false;
if(pRoot1->val == pRoot2->val)
return isSameTree(pRoot1->left, pRoot2->right) && isSameTree(pRoot1->right, pRoot2->left);
return false;
}
};