Skip to content

Instantly share code, notes, and snippets.

@looselytyped
Created May 29, 2010 23:08
Show Gist options
  • Save looselytyped/418613 to your computer and use it in GitHub Desktop.
Save looselytyped/418613 to your computer and use it in GitHub Desktop.
(defn xconj [t v]
(cond (nil? t) {:val v, :l nil, :r nil}
(< v (:val t)) (cond
(nil? (:l t)) {:val (:val t), :l (xconj nil v), :r (:r t)}
:else {:val (:val t), :l (xconj (:l t) v), :r (:r t)})
:else (cond (nil? (:r t)) {:val (:val t), :l (:l t), :r (xconj nil v)}
:else {:val (:val t), :l (:l t), :r (xconj (:r t) v)})))
(defn xseq [t]
(when t
(concat (xseq (:l t)) [(:val t)] (xseq (:r t)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment