Saltar al contenido

Imagen de espejo de un árbol binario

Solución:

Suena a tarea.

Parece muy fácil. Escriba una rutina recursiva que primero visite en profundidad cada nodo y construya el árbol espejo con la izquierda y la derecha invertidas.

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;
  }
}

Esto devuelve un nuevo árbol; algunas otras respuestas lo hacen en su lugar. Depende de lo que tu tarea te haya pedido que hagas 🙂

void swap_node(node n) {
  if(n != null) {
    node tmp = n.left;
    n.left = n.right;
    n.right = tmp;

    swap_node(n.left);
    swap_node(n.right);
  }
}

swap_node(root);

Solución banal:

for each node in tree
    exchange leftchild with rightchild.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *