Algoritmia - enhebrar un arbol......

 
Vista:

enhebrar un arbol......

Publicado por caio (2 intervenciones) el 30/07/2001 01:05:50
como puedo enhebrar un arbol en INORDER por derecha...
la estructura del nodo es la siguiente:
IZQ | INFO | DER | DTAG
El DTAG me indica "con un 1" q la direccion indicada por DER es el siguiente en inorder, y "con un 0" q la direccion a la q apunta DER es el hijo derecho.-
Nose si se me entendio bien.-
De todas formas gracias por aunq sea leer mi duda.-

caio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Enhebrar un árbol en INORDER por derecha

Publicado por Alejandro (307 intervenciones) el 27/02/2024 22:40:16
Caio, para enhebrar un árbol en INORDER por la derecha, puedes utilizar un recorrido INORDER modificado que tenga en cuenta la información proporcionada por el DTAG. Aquí tienes un ejemplo de un algoritmo en pseudocódigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PROCEDURE EnhebrarInorderDerecha(raiz):
    Stack pila
    Node actual = raiz
    Node previo = NULL
 
    WHILE (actual NO ES NULL O pila NO ESTÁ VACÍA):
        WHILE (actual NO ES NULL):
            Push(pila, actual)
            actual = actual.IZQ
 
        actual = Pop(pila)
 
        IF (previo NO ES NULL Y actual.DTAG == 1):
            // Enhebrar con el nodo anterior en INORDER por la derecha
            previo.DER = actual.DER
            actual.DTAG = 0  // Actualizar DTAG para indicar hijo derecho
 
        previo = actual
        actual = actual.DER
 
    // Fin del recorrido
END PROCEDURE

Este algoritmo utiliza una pila para realizar el recorrido INORDER y ajusta los enlaces DER y DTAG según la información proporcionada en la estructura del nodo.

Espero que esta solución sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar