您的位置:首页 > 其它

6.2 设计一个持久化玩具

2015-06-06 14:12 369 查看

第6章 惰性与不变性

不变对象总是线程安全的。 –Brian Goetz

6.2 设计一个持久化玩具

1. 实现一颗二叉排序树(Binary Sort Tree)

(defn 创建 [t v]
  "创建一颗二叉排序树(Binary Sort Tree)"
  (cond (nil? t)       {:v v, :l nil, :r nil}
        (< v (:v t))   {:v (:v t), :l (创建 (:l t) v), :r nil}
        :else          {:v (:v t), :l (:l t), :r (创建 (:r t) v)}

  ))

(def tree1 (创建 nil 5))
tree1 ;=> {:v 5, :l nil, :r nil}

(def tree1 (创建 tree1 3))
tree1 ;=> {:v 5, :l {:v 3, :l nil, :r nil}, :r nil}

(def tree1 (创建 tree1 2))
tree1 ;=> {:v 5, :l {:v 3, :l {:v 2, :l nil, :r nil}, :r nil}, :r nil}, :r nil}


1. 遍历二叉排序树

(defn 遍历 [t]
  (when t (concat (遍历 (:l t)) [(:v t)] (遍历 (:r t)))))

(遍历 tree1) ;=> (2 3 5)


作者 [@liango]

2015 年 06月 06日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: