题目描述:请实现一个二叉树,判断一颗二叉树是否是对称的。注意,一颗二叉树和它的镜像完全相同,则称为对称二叉树。
思路分析:要想成为一个对称二叉树,要满足两点:二叉树在结构上必须对称,对称结构的对称位置数据的值相同。本题我们可以使用递归,判断一颗二叉树是否为对称二叉树。
代码实现:
/*
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 ISSymme(pRoot,pRoot);
}
bool ISSymme(TreeNode* pRoot1,TreeNode* pRoot2)
{
if(pRoot1==NULL && pRoot2==NULL)
return true;
if(pRoot1==NULL || pRoot2==NULL)
return false;
if(pRoot1->val != pRoot2->val)
return false;
return ISSymme(pRoot1->left,pRoot2->right) && (pRoot1->right,pRoot2->left);
}
};
本文介绍了一种通过递归方法来判断二叉树是否为对称二叉树的算法。对称二叉树指一棵二叉树与其镜像完全相同。文章详细解释了判断逻辑并提供了具体的代码实现。
&spm=1001.2101.3001.5002&articleId=81662112&d=1&t=3&u=0bd6b8d903494e5eae8e9b62ba6ac574)
2万+

被折叠的 条评论
为什么被折叠?



