C 函数将二叉树转换为镜像树

C 函数将二叉树转换为镜像树,c,data-structures,tree,binary-tree,C,Data Structures,Tree,Binary Tree,如何将树转换为其镜像树。例如 1 1 / \ / \ 2 3 to 3 2 / \ 4 4 执行后序遍历 void mirror(struct node* node) { if (node!=NULL) { struct node* temp

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

    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;
  }
} 
解决方案使用递归将树转换为其镜像树

  • 若两棵树的根都为null,那个么它们是相同的。返回true
  • 如果两个树的根都不为null,则检查两个节点中的数据是否相同,并递归检查左子树和右子树是否相同
  • 如果只有一棵树的根为null,则这些树不相同,因此返回false
  • 来源:

    可能存在的副本