Scheme 计算树方案中的重复值
我正在尝试计算树中的重复项。我正在附上一张照片以便更好地说明。我走错了路,我没有地方可去。 这就是我所做的Scheme 计算树方案中的重复值,scheme,Scheme,我正在尝试计算树中的重复项。我正在附上一张照片以便更好地说明。我走错了路,我没有地方可去。 这就是我所做的 (define (arbre-insere valeur arbre) (cond ((null? arbre) (list (cons valeur 1) '() '())) ((< valeur(car arbre)) (list (cons (car arbre) count)
(define (arbre-insere valeur arbre)
(cond ((null? arbre) (list (cons valeur 1) '() '()))
((< valeur(car arbre))
(list (cons (car arbre) count)
(arbre-insere valeur (cadr arbre))
(caddr arbre)))
(> valeur(car arbre) (list cons ((car arbre) count) (cadr arbre)
(arbre-insere valeur (caddr arbre) )))
(else
)
))][1]
(定义(arbre insere valeur arbre)
(cond((null?arbre)(列表(cons valeur 1)’())
(valeur(car arbre)(列表cons(car arbre)计数)(cadr arbre)
(arbre insere valeur(caddr arbre)))
(其他
)
))][1]
这是一张草图,
..
和
中的内容将由您填写
(define leaf '())
; leaf? : tree -> boolean
; return #t if the tree is a leaf,
; #f otherwise
(define (leaf? tree)
(null? leaf?))
; value : tree -> element
; return the root element of the tree
(define (value tree)
...)
; count : tree -> integer
; return the count of the root element of tree
(define (count tree)
...)
; left : tree -> tree
; return the left subtree of tree
(define (left tree)
...)
; right : tree -> tree
; return the right subtree of tree
(define (right tree)
...)
; make-node : value integer tree tree
; construct tree from a value and count,
; left is a tree whose elements are smaller than value
; right is a tree whose elements are greater than value
(define (make-node value count left right)
(list left (cons value count) right))
; tree-insert : value tree -> tree
(define (tree-insert v t)
(cond
[(leaf? t) (make-tree v 1 leaf leaf)]
[(= v (value t)) (make-tree v <old-count+1> (left t) (right t))]
[(< v (value t)) (make-tree v (make-node (value t) (count t)
(insert-tree v (left t)) r))]
[(> v (value t)) <???>]
[else (error 'tree-insert "an unexpected error occurred")]))
(定义叶'())
; 叶子?:树->布尔
; return#t如果树是一片叶子,
; #f否则
(定义(叶?树)
(空?叶?)
; 值:树->元素
; 返回树的根元素
(定义(值树)
...)
; 计数:树->整数
; 返回树的根元素的计数
(定义(计数树)
...)
; 左:树->树
; 返回树的左子树
(定义(左树)
...)
; 右:树->树
; 返回树的右子树
(定义(右树)
...)
; 生成节点:值整数树
; 从值和计数构造树,
; 左边是一个元素小于value的树
; 右侧是元素大于值的树
(定义(使节点值左右计数)
(左列表(cons值计数)右)
; 树插入:值树->树
(定义(树插入v t)
(续)
[(叶子?t)(使树变为1片叶子)]
[(=v(值t))(使树v(左t)(右t))]
[(v(值t))]
[否则(错误“树插入”发生意外错误]))
你们对法语过敏吗Darbre=tree,insere=insert,valeur=value您使用哪种约定构建树?叶子是什么样子的?内部节点是什么样子的?它是一个二叉树。在这种情况下,一个叶子将是一个空列表,内部节点只是根中的所有数字——所有向下的叶子。如果它不能正确回答您的问题,我很抱歉:(仅数字”到底是什么意思?我在您的示例中看到了(14.1)。14是什么意思?1是什么意思?14和1都是元素吗?非常感谢您的回答。但是为什么您要测试树是否为空,然后再测试它是否为叶(我认为叶也是空列表)