Skip to content

Instantly share code, notes, and snippets.

@Wesitos
Created July 17, 2014 04:58
Show Gist options
  • Save Wesitos/195c667c6b93761c0252 to your computer and use it in GitHub Desktop.
Save Wesitos/195c667c6b93761c0252 to your computer and use it in GitHub Desktop.
;;Crea una hoja del arbol
(defn hoja [val]
{:v val :l nil :r nil}
)
;;Calcula la profundidad de un arbol
(defn depth [arbol]
(if (nil? arbol)
0
(let [left (:l arbol)
right (:r arbol)]
(inc (max (depth left) (depth right))))))
;;Concatena el segundo parametro a "la derecha" del primero
(defn add-r
[data v]
(merge data {:r (hoja v)}))
;;Concatena el segundo parametro a "la izquierda" del primero
(defn add-l
[data v]
(merge data {:l (hoja v)}))
;;Utiliza update-in para agregar una hoja a un arbol
(defn add-hoja
[arbol ks v]
)
;;Serializa un arbol
(defn serializar
([arbol]
(serializar arbol {:x 0 :y 0} ))
([arbol pos]
(if (empty? arbol)
nil
(let [ {:keys [v l r] :as arb} arbol
{:keys [x y]} pos
ser-l (serializar l {:x (* x 2) :y (inc y)})
ser-r (serializar r {:x (inc (* x 2)) :y (inc y)}) ]
(concat (list (merge pos [:v v])) ser-l ser-r)
))
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment