Tipos Árbol
Un árbol puede ser un árbol vacío (Empty
) o un árbol binario compuesto de: (Árbol Binario) - (Elemento) - (Árbol Binario)
.
El tipo para representar árboles binarios con nodos etiquetados con valores de tipo ‘a.
El árbol vacío.
¿Está vacío? (is_empty
)
Árbol Hoja (leaftree
)
Dado un elemento crear un árbol con un sólo nodo (árbol hoja).
Raíz (root
)
Etiqueta o valor de la raíz. Devuelve un error si está vacío.
Rama izquierda (left_b
)
Rama derecha (right_b
)
Remplazar la raíz (root_replacement
)
Remplazar rama izquierda (left_replacement
)
Remplazar rama derecha (right_replacement
)
Tamaño (size
)
El número de nodos del árbol.
Altura (height
)
Altura 0 para un árbol vacío y 1 para un único nodo.
Recorridos
Recorrido en preorden (preorder
)
Primero la raíz, luego la rama izquierda y por último, la rama derecha.
Recorrido en inorden (inorder
)
Primero la rama izquierda, luego la raíz y por último, la rama derecha.
Recorrido en postorden (postorder
)
Primero la rama izquierda, luego la rama derecha y por último, la raíz.
Recorrido en anchura (breadth
)
Enumeración de los nodos del árbol recorrido por niveles de izquierda a derecha.
Lista de hojas (leaves
)
Lista de hojas de izquierda a derecha.
Búsqueda en profundidad (find_in_depth
)
Busca en profundidad (priorizando las ramas izquierdas) un nodo que satisfaga el predicado.
Búsqueda en profundidad OPT (find_in_depth_opt
)
Lo mismo que find_in_depth
pero en vez de devolver un error si no se encuentra devuelve None
.
¿Existe? (exists
)
Para todos (for_all
)
“Mapear” (map
)
Imagen Especular (mirror
)
Remplaza cuando se cumpla (replace_when
)
Remplazar los nodos que satisfacen p (con todos sus descendientes) por el árbol r.
Cortar por la raíz (cut_above
)
Eliminar todos los nodos que satisfacen p (con todos sus descendientes).
Cortar por debajo de la raíz (cut_below
)
Eliminar todos las ramas de los nodos que satisfacen p (con todos sus descendientes).