你如何在Clojure中创建二叉搜索树?

unj*_*nj2 11 clojure

在Scheme中,我可以使用define-struct二进制搜索树,但是你如何在Clojure中做到这一点?

Eri*_*and 18

您可以使用structmaps.定义一个:

(defstruct bintree :left :right :key)
Run Code Online (Sandbox Code Playgroud)

制作一个实例:

(struct-map bintree :left nil :right nil :key 0)
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样访问结构中的值:

(:left tree)
Run Code Online (Sandbox Code Playgroud)

等等

或者您可以创建新的访问者功能:

(def left-branch (accessor bintree :left))
Run Code Online (Sandbox Code Playgroud)

并使用它:

(left-branch tree)
Run Code Online (Sandbox Code Playgroud)