Mutable fields are really hard to use correctly in Clojure, but it's good to see an appropriate use case for `:volatile-mutable` in the implementation of these data structures.
Mutable fields are really hard to use correctly in any language, and that's why Clojure encourages the use of immutable data. Thus I find it really odd that the article builds a mutable binary tree. The immutable version would have been equally simple. And now you can't put that tree into any of the Clojure's reference types (ref, agent, atom).