3 Stimmen

Implementieren eines binären Suchbaums in Clojure

Ich versuche, mich mit Clojure vertraut zu machen und habe daher begonnen, einige grundlegende Algorithmen und Datenstrukturen zu implementieren. Ich habe derzeit ein Problem mit der Implementierung eines binären Suchbaums. Hier ist mein Code:

(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))

Ich habe versucht, eine Zufallszahl in BST in der REPL, Zeile so:

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

Aber ich bekomme eine NullPointerException aber ich verstehe nicht, warum ich diese Ausnahme erhalte. Ist mit meinem Code etwas nicht in Ordnung?

3voto

mikera Punkte 103423

Ich vermute, es liegt daran, dass Sie "bst" in Ihren Funktionsparametern wiederverwenden, was struct-map verwirrt, wenn der Wert nil.... ist.

Versuchen Sie, den Funktionsparameter in etwas anderes umzubenennen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X