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