2013-08-21 68 views
0

我需要評估一個方案函數,該函數輸入一個數字和一個二叉樹,並在二進制樹中輸出與數字深度相同的數據表達式。例如,樹的根是1,子樹的根是2,依此類推。如何繼續評估方案中的二叉樹

這是我到目前爲止,我不斷收到錯誤消息Error in null?: expected a list; got '1'.(這是解決問題的另一種方法,我曾問過)關於這個問題,我可以用我已經使用的術語來解釋這個嗎?計劃編程新手。

謝謝

(define fetch-exp (λ (n bt) 
    (cond [(not (deep-enough? n bt)) ▽#f] 
     [(one? n) (root bt)] 
     [(deep-enough? n (left-tree bt)) 
     (fetch-exp (left-tree bt) (sub1 n))] 
     [(deep-enough? n (right-tree bt)) 
     (fetch-exp (right-tree bt) sub1 n)] 
     [else ▽#f]))) 

(define deep-enough? 
(λ (n bt) 
    (cond [(> (tree-depth bt) n) ▽#t] 
     [(equal? (tree-depth bt) n) ▽#t]  
     [else ▽#f]))) 

回答

0

在遞歸你還在傳遞參數發送回取表達順序錯誤。新n首先,然後是新樹的值。

你還有可能深深地調用兩次樹深度?

(define deep-enough? 
(λ (n bt) 
    (if (>= (tree-depth bt) n) 
     true 
     false))) 

修復它

但是看看我的回答對您的其他問題有沒有需要有一個單獨的函數來計算的深度。用一個可以回溯的函數開始遍歷它。 (向主叫方發出錯誤信號,並且如果有效的主叫方尚未嘗試過,則讓主叫方嘗試不同的路徑)