생성일: 2020년 01월 06일
수정일: 2023년 08월 27일

4clojure - To Tree, or not to Tree (95)

  1. 문제
  2. 풀이

문제

(= (__ '(:a (:b nil nil) nil))
   true)

(= (__ '(:a (:b nil nil)))
   false)

(= (__ [1 nil [2 [3 nil nil] [4 nil nil]]])
   true)

(= (__ [1 [2 nil nil] [3 nil nil] [4 nil nil]])
   false)

(= (__ [1 [2 [3 [4 nil nil] nil] nil] nil])
   true)

(= (__ [1 [2 [3 [4 false nil] nil] nil] nil])
   false)

(= (__ '(:a nil ()))
   false)

풀이

(fn tree? [col]
  (or (nil? col)
      (and (coll? col)
           (= 3 (count col))
           (every? tree? (rest col)))))

이진 트리를 검증하는 문제 이다. node, 왼쪽, 오른쪽 총 3개의 값이 필요하고, 왼쪽, 오른쪽 둘 중 하나라고 없으면 이진트리가 아니이다, 하지만 nil 값이 있으면 이진트리의 마지막 이라는 것을 보여주는 형식으로 하고 있다.

every? 함수를 이용해서 tree?의 함수를 검증을 하고 있다 every?는 collection의 모든 값들이 참이면 true를 반환하는 함수이다.

Tags: 4clojure Today I Learn