数据结构-将二进制树转换为镜像树的C函数



如何将树转换为其镜像树。例如

    1                     1
   /                    / 
  2   3        to       3   2
 /                           
4                             4

执行订单后遍历。

void mirror(struct node* node) 
{
  if (node!=NULL)
  {
    struct node* temp;
    /* do the subtrees */
    mirror(node->left);
    mirror(node->right);
    /* swap the pointers in this node */
    temp        = node->left;
    node->left  = node->right;
    node->right = temp;
  }
} 

解决方案使用递归将树转换为其镜像树。

  1. 如果两棵树的根都为空,则它们是相同的。返回true
  2. 如果两个树的根都不为空,请检查两个节点中的数据是否相同,并递归检查左子树和右子树是否相同
  3. 如果其中只有一棵树的根为null,则这两棵树不相同,因此返回false

来源:http://www.ideserve.co.in/learn/mirror-a-tree

最新更新