一尘不染

二叉树的镜像

algorithm

假设有一棵树:

             1
            / \
           2   3
              / \
             4   5

然后镜像将是:

              1
             / \
            3   2
           / \
          5   4

假设节点具有以下结构:

struct node{
      node left;
      node right;
      int value;
}

有人可以为此建议一种算法吗?


阅读 178

收藏
2020-07-28

共1个答案

一尘不染

听起来像功课。

看起来很简单。编写一个递归例程,该例程首先深度访问每个节点,并以左右反转的方式构建镜像树。

struct node *mirror(struct node *here) {

  if (here == NULL)
     return NULL;
  else {

    struct node *newNode = malloc (sizeof(struct node));

    newNode->value = here->value;
    newNode->left = mirror(here->right);
    newNode->right = mirror(here->left);

    return newNode;
  }
}

这将返回一棵新树-其他一些答案就位。取决于您的作业要求您做的事情:)

2020-07-28