给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)
例如: 下面这棵二叉树是对称的
bool is_mirror(struct TreeNode* pRoot1, struct TreeNode* pRoot2){
if(pRoot1 == NULL && pRoot2 == NULL){
return true;
}else if(pRoot1 == NULL || pRoot2 == NULL){
return false;
}
if(pRoot1->val != pRoot2->val){
return false;
}
return is_mirror(pRoot1->left, pRoot2->right) && is_mirror(pRoot1->right, pRoot2->left);
}
bool isSymmetrical(struct TreeNode* pRoot ) {
return is_mirror(pRoot, pRoot);
}
分析:
对称的规律是,从根节点开始,右子节点等于左子节点。每个子节点的左右子节点都需要判断一次。