0
我是clojure以及函数式编程的新手。我试图用遍历序树:堆的预购遍历
(def tree {:left 7 :val 4 :right {:left 4 :val 3 :right 1}})
(defn preorder
[tree]
(if
(nil? tree)(0)
(let [v (:val tree)
l (:left tree)
r (:right tree)]
(print-str (v (preorder l) (preorder r))))))
,但我得到以下异常:java.lang.ClassCastException: java.lang.Long cannot be cast to clojure.lang.IFn
当我调用函数(预购树)。 任何人都可以指导我我犯了什么错误。
谢谢我在我的代码中进行了更改,但我仍然没有得到预期的结果。输出是“40030000”。可以告诉我,如果我正确应用逻辑? – abc 2014-10-19 03:36:15
你的树没有一致的结构。 ':left'和':right'只是数字,还是他们的子树?现在,你在7上递归调用你的函数,根的':left'和7的val/left/right都是零。 – amalloy 2014-10-19 03:42:24
我使用maps.:left和:right创建树是子树。 – abc 2014-10-19 03:48:42