1
/ \
2 2
/ \ / \
3 4 4 3
这种树是镜像二叉树,可看出来,每次递归需要多一次的判断,比如第一次是根的判断,第二次就要判断左子树,和右子树,第三次就要判断左子树的左子树和右子树的右子树,与左子树的右子树和右子树的左子树。
可见,判断次数是增加的,所以递归是两次的递归
判断流程也是如此
bool _isSymmetric(struct TreeNode* p,struct TreeNode* q)
//判断两颗树相同,但是判断的是对称的子树
{
if(p==NULL &&q==NULL)
return true;
if(p==NULL || q==NULL)
return false;
if(p->val != q->val)
return false;
return _isSymmetric(p->left,q->right) && _isSymmetric(p->right,q->left);
}
bool isSymmetric(struct TreeNode* root){
if(root == NULL)
return true;
return _isSymmetric(root->left,root->right);
}