二进制搜索树算法通常使用递归,而我很难用它。
这是一个将树转换为镜像的代码。
void mirror_image(struct tree* node1)
{
if (node1==NULL)
return;
else
{
struct tree *temp;
mirror_image(node1->left);
mirror_image(node1->right);
temp=node1->left;
node1->left=node1->right;
node1->right=temp;
}
}
这是如何运作的?
答案 0 :(得分:1)
基本上,您正在创建新树,并更改其左右节点。指针,因为你正在改变地址。首先,您将左节点的值赋给临时指针变量。然后将右节点的值放入左节点。最后,temp中的值正在转移到右边节点。它就像交换一样。
答案 1 :(得分:0)
因此,它使用
扫描左侧的孩子树 mirror_image(node1->left);
和正确的孩子使用
mirror_image(node1->right);
到达终点时
if (node1==NULL)
return;
它使用交换过程交换它们:
temp=node1->left;
node1->left=node1->right;
node1->right=temp;
我建议尝试使用小型二叉树,在纸上自己查看。