2017-03-21 2 views
0

노드를 사용하고이 노드를 루트로하는 트리의 깊이를 반환하는 함수를 작성하려고합니다. 지금까지 다음 코드를 가지고 있습니다 :스키마 트리 깊이

(define (make-tree value left right) 
    (list value left right)) 

(define (value T) (car T)) 
(define (right T) (caddr T)) 
(define (left T) (cadr T)) 

(define (insert x T) 
    (cond ((null? T) (make-tree x '() '())) 
     ((eq? x (value T)) T) 
     ((< x (value T)) (make-tree (value T) 
            (insert x (left T)) 
            (right T))) 
     ((> x (value T)) (make-tree (value T) 
            (left T) 
            (insert x (right T)))))) 

어디서부터 진행해야 할 지 잘 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다. 로

답변

0

나무의 깊이는 정의 : 빈 트리 깊이 0을 가지고

  1. 이 아닌 빈 나무는 깊이에게 아이들의 깊이의 1 + 최대를 가지고

코드에서는 다음과 같이 보입니다.

(define (tree-depth tree) 
    (if (tree-empty? tree) 
     0 
     (+ 1 (max (tree-depth (tree-left tree)) 
       (tree-depth (tree-right tree))))))