如何在Clojure中打印以“ire”结尾的树元素?

时间:2014-10-20 03:38:50

标签: clojure tree

我正在尝试在Clojure中为给定的树结构打印Pre Order(Root,Left和Right)中的树元素。

下面是代码以预购顺序打印元素,但我无法弄清楚如何应用条件来检查字符串是否以" ire"结束。

我尝试过使用Filter和When。有人可以帮忙吗?

(defn preorder [tree]
  (if (nil? (:root tree))
    (str nil)
    (let [v (:root  tree)
          l (:left  tree)
          r (:right tree)]
      (str v
           (str " ")
           (str l (str " ") (preorder l))
           (str " ")
           (str r (str " ")(preorder r))))))

1 个答案:

答案 0 :(得分:2)

建议:

  • 算法:生成行走树的:root值的序列。 使用序列库mapfilter将其转换为字符串 或根据需要过滤节点。
  • 数据:使用nil:left的{​​{1}}值代替 :right

因此:

:root

例如

(defn preorder [tree]
  (if tree
    (let [v (:root  tree)
          l (:left  tree)
          r (:right tree)]
      (cons v (concat (preorder l) (preorder r))))))

请注意,如果树太深,您将耗尽堆栈。