递归如何在二叉搜索树中工作?

时间:2013-09-07 14:06:35

标签: c algorithm recursion

二进制搜索树算法通常使用递归,而我很难用它。

这是一个将树转换为镜像的代码。

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;

    }

}

这是如何运作的?

2 个答案:

答案 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;

我建议尝试使用小型二叉树,在纸上自己查看。