Tree 方案中树的顺序遍历
我想按顺序遍历一棵树,该树的节点包含一个整数,如果所有数字都是有序的(即下一个数字大于或等于上一个数字),则返回#t 我迄今为止的努力Tree 方案中树的顺序遍历,tree,scheme,inorder,Tree,Scheme,Inorder,我想按顺序遍历一棵树,该树的节点包含一个整数,如果所有数字都是有序的(即下一个数字大于或等于上一个数字),则返回#t 我迄今为止的努力 (define (in-order tree number) (cond [(leaf? tree) (>= leafnumber number)] [(cons? leftsubtree) (in-order leftsubtree leftnumber)] [(cons? rightsubtree
(define (in-order tree number)
(cond [(leaf? tree) (>= leafnumber number)]
[(cons? leftsubtree) (in-order leftsubtree leftnumber)]
[(cons? rightsubtree) (in-order rightsubtree rightnumber)]))
不知何故,当我切换分支时,我的数字参数似乎是错误的。
我是否需要使用另一个变量来存储这些变量?以下是我的建议:
; in-order : tree number -> number or #f
; if all numbers in the tree are larger than number, then return the maximum number in tree,
; otherwise
(define (in-order tree number)
(cond
[(leaf? tree) (if (>= leafnumber number)
leafnumber ; leafnumber is the largest number in tree
#f)] ; not all numbers in tree are smaller than number
[else (let ([leftnumber (in-order leftsubtree number)])
(let ([rightnumber (in-order rightsubtree leftnumber)])
(and leftnumber
rightnumber)))]))
(in-order tree -inf.0)
如果leftnumber是一个数字,rightnumber是一个布尔值,则and如何工作?