首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆的预序遍历法

堆的预序遍历法
EN

Stack Overflow用户
提问于 2014-10-19 10:54:17
回答 1查看 604关注 0票数 0

我不熟悉clojure,也不熟悉函数式编程。我尝试使用以下命令以预先排序的方式遍历树:

代码语言:javascript
复制
(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。有没有人能告诉我我犯了什么错误。

EN

回答 1

Stack Overflow用户

发布于 2014-10-19 11:20:45

(0)尝试将0作为函数调用:括号不是用于分组,而是用于调用函数(或宏)。相反,只需编写0即可。类似地,(v (preorder l) (preorder r))尝试将v作为函数进行调用。相反,您可能想要像(str v (preorder l) (preorder r))这样的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26446827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档