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)