6.2 设计一个持久化玩具
2015-06-06 14:12
369 查看
第6章 惰性与不变性
不变对象总是线程安全的。 –Brian Goetz6.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日
相关文章推荐
- eclipse遇到问题汇总
- LeetCode Subsets(求所有的集合)
- 转:链接器link.exe 编译器cl.exe 资源编译器rc.exe
- Qt版的Rtsp客户端
- ubuntu 下 Eclipse中syso 快捷键 Alt + / 不能使用的问题
- Linux系统下查看某文件修改的时间戳
- 手把手教popupWindow从下往上,以达到流行效果
- 合并石子
- dict
- LeetCode2 AddTowNumbers
- 【构造】UVa 11387 The 3-Regular Graph
- JsRender实用入门教程
- poj 2540 Hotter Colder(极角计算半平面交)
- docker rmi all
- 【NOIP提高组2005】谁拿了最多奖学金
- ef6 使用 mysql
- Gradle project sync failed. Please fix your project and try
- win8.1安装出错解决方法之一
- 秒表功能实现
- CMake的使用