class Solution {
public:
void check(TreeNode* t,TreeNode* s,int &i)
{
if(s!=NULL&&t!=NULL){ //如果左右子树都不为空
if(s->val!=t->val||s->val!=t->val) //判断左右子树的值是否不相等
{
i=1; //不相等使i=1
return; //直接结束函数
}
else
check(t->left,s->right,i); //调用递归传入左子树的左孩子和右子树的右孩子
check(t->right,s->left,i); //调用递归传入左子树的右孩子和右子树的左孩子
}
if(s!=NULL&&t==NULL||s==NULL&&t!=NULL) //如果左右子树一个为空一个不为空则说明不对称直接使i=1
{
i=1;
return;
}
else //左右子树都为空结束函数
{
return;
}
}
bool isSymmetric(TreeNode* root) {
if(root==NULL){ //判断如果根为空直接返回true
return true;
}
int i=0; //设置i值判断是不否对称
check(root->left,root->right,i); //调用递归将根节点的左右子树传入递归函数中
if(i==0)
{
return true;
}
else
{
return false;
}
}
};
对称二叉树
最新推荐文章于 2023-04-13 11:32:02 发布