Реализация бинарного дерева поиска в clojure - PullRequest
3 голосов
/ 07 февраля 2011

Я пытаюсь познакомиться с Clojure, и поэтому я начал реализовывать некоторые базовые алгоритмы и структуры данных.В настоящее время у меня есть проблема с реализацией бинарного дерева поиска.Вот мой код:

(defstruct bst :left :right :key)

(defn add-bst [n bst-t]
  (cond
    (nil? bst-t) (struct-map bst :left nil :right nil :key n)
    (< n (:key bst-t))  (struct-map bst :left (add-bst n (:left bst-t))
                                :right (:right bst-t) :key (:key bst-t))
    (> n (:key bst-t))  (struct-map bst :left (:left bst-t)
                                :right (add-bst n (:right bst-t)) :key (:key bst-t))
    true bst-t))

Я пытался добавить случайное число в BST в REPL, строка так:

(exercise.new-ns/add-bst 5 nil)

Но я получил NullPointerException, ноЯ не понимаю, почему я получаю это исключение.Что-то не так с моим кодом?

1 Ответ

3 голосов
/ 07 февраля 2011

Я подозреваю, что это потому, что вы повторно используете "bst" в параметрах вашей функции, что сбивает с толку struct-map, когда значение равно nil ....

Попробуйте переименовать параметр функции во что-то другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...