我已经测试了使用根节点root
创建给定树的镜像并返回镜像树的根的函数。我将此根存储在一个新变量mirrorRoot
中。现在,我正在尝试编写一个函数,该函数检查两棵树是否彼此互为镜像。我恰好传递了这两个根节点root
和mirrorNode
,但结果是false
。
BinaryTreeNode* mirrorTree(BinaryTreeNode *root) {
BinaryTreeNode *temp;
if (root) {
mirrorTree(root->left);
mirrorTree(root->right);
temp = root->left;
root->left = root->right;
root->right = temp;
}
return root;
}
这是我编写的代码,用于检查树木是否彼此互为镜像。
int areMirrorTree(BinaryTreeNode *root1, BinaryTreeNode *root2) {
if (root1 == NULL && root2 == NULL)
return 1;
if (root1 == NULL || root2 == NULL)
return 0;
if (root1->data != root2->data)
return 0;
else
return areMirrorTree(root1->left, root2->right) && areMirrorTree(root1->right, root2->left);
}
请帮助我找出我在做什么错误?
答案 0 :(得分:0)
我发现我正在做的错误。我错误地用根节点root
更新了我的旧树,并从函数中返回它并将其存储在新的变量名mirrorRoot
中。最终,指针root
和mirrorRoot
表示与镜像树相同的树。这就是为什么我的areMirrorTree
函数每次都返回false
的原因。