我正在尝试在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))))))
答案 0 :(得分:2)
建议:
:root
值的序列。
使用序列库map
或filter
将其转换为字符串
或根据需要过滤节点。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))))))
请注意,如果树太深,您将耗尽堆栈。