2015-02-05 1 views
0

이 트리의 노드는 이름이 문자열이고 왼쪽과 오른쪽이 내가 가진 것처럼 느껴지는 자식 트리입니다 (이름 왼쪽에있는) 세 항목의 목록입니다 우리는 특히,이 경우, 그들을 피하기 ((삽입 이름을 오른쪽에서 왼쪽) 정의)이름을 가져와 이진 트리 구조에 추가

(define tree 
    (lambda (node word) 
     (cond 
     ((null? node) (make-tree word)) 
     ((string=? word (tree-word node)) 
      (set-tree-count! node (+ (tree-count node) 1)) 
      node) 
     ((string<? word (tree-word node)) 
      (set-tree-left! node (tree (tree-left node) word)) 
      node) 
     (else 
      (set-tree-right! node (tree (tree-right node) word)) 
      node)))) 

답변

0

돌연변이 연산을 사용할 필요가 제도에서 일반적으로 없습니다 만에 이것을 쓸 수있는 쉬운 방법이 트랙 내렸다 우리가 갈 때 새로운 나무를 만들기는 쉽다. 그리고 그 이유는 무엇입니까? 이 문제는 숫자를 추가하는 것과 아무런 관련이 없습니다. 또한 정의 (insert name left right)은 의미가 없습니다. 이라는 단어을 트리의 루트 노드에서 시작하여 삽입하고자합니다. leftright은 매개 변수로 유용하지 않습니다. 다시 처음부터 다시 시작합시다.

(define (insert node word) 
    (cond ((null? node) (make-tree word '() '())) 
     ((string=? word (tree-word node)) node) 
     ((string>=? word (tree-word node)) 
     (make-tree (tree-word node) 
        (tree-left node) 
        (insert (tree-right node) word))) 
     (else   
     (make-tree (tree-word node) 
        (insert (tree-left node) word) 
        (tree-right node))))) 
+0

미안하지만, 분명히 알 수는 없지만 트리에서 함수가 호출되고 트리 자체를 처리해야하는 경우에는이를 수행하는 방법이 있습니까? 기본적으로 하나의 이름을 트리의 왼쪽 또는 오른쪽에 입력하는 기능은 무엇입니까? – Rand3m

+0

"처리"하지 않으면 어떻게 트리를 수정할 수 있습니까? 그리고 위의 _ 이외에는 "나무 위에"불리고 있습니다. –