2015-11-07 103 views
-1

我試圖實現對BST二叉搜索樹Clojure中

(defn size 
    "Return the number of nodes in a BST." 
    [bst] 
    (cond (nil? bst) 0 
    :else (+ 1 (+ size(:left bst) size(:right bst)))) 
) 

這看起來正確的一個附加功能?

+0

這是一個有效的'size'(不是'add')函數,只要':left'和':right'存在非零節點。 – Thumbnail

回答

1

的東西夫婦錯在這裏。你還是在「標準」的方式調用函數。 size(:left bst)將引發異常,則需要(size (:left bst))(paranthesis周圍是重要的,以及函數的名稱後面有一個空格)。

第二件事 - 無需使用cond當你有一個案例和:else。僅在以下情況下使用:

(if (nil? bst) 
    0 
    (+ 1 (+ (size (:left bst)) (size (:right bst)))))