取一个名字并将其添加到二叉树结构中

Taking a name and adding it to a binary tree structure

这棵树中的一个节点是三个项目的列表(name left right),其中name是一个字符串,left和right是子树我觉得我已经偏离轨道有没有简单的方法用 (define(insert name left right))

写这个
(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))))

不需要使用变异操作,通常在 Scheme 中我们会避免它们,在这种情况下特别容易(并且推荐)在我们进行时构建一棵新树。而且,为什么要计数?这个问题与加法无关。还要注意定义 (insert name left right) 没有多大意义,我们想从树的根 node 开始插入一个 wordleftright 作为参数没有用。让我们从头再来。

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