How to print tree elements ending in "ire" in Clojure? -
How to print tree elements ending in "ire" in Clojure? -
i trying print tree elements in pre order (root, left , right) in clojure given tree structure.
below code prints elements in pre order, not able figure out how apply status check string ends "ire".
i tried using filter , when well. can help here please?
(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))))))
suggestions:
algorithm: generate sequence of:root values walking tree. utilize sequence library, map or filter, convert strings or filter nodes need be. data: utilize nil values :left , :right instead of :root. thus:
(defn preorder [tree] (if tree (let [v (:root tree) l (:left tree) r (:right tree)] (cons v (concat (preorder l) (preorder r)))))) for example
(preorder {:root 5, :left {:root 10}}) ;(5 10) (filter even? (preorder {:root 5, :left {:root 10}})) ;(10) beware run out of stack if tree deep.
clojure tree
Comments
Post a Comment