【问题标题】:In order traversal of tree in scheme在方案中按顺序遍历树
【发布时间】:2015-09-01 13:48:41
【问题描述】:

我想按顺序遍历节点包含整数的树,如果所有数字都按顺序排列(即下一个数字大于或等于前一个数字),则返回 #t。

到目前为止我的尝试

 (define (in-order tree number)  
    (cond [(leaf? tree) (>= leafnumber  number)]
          [(cons? leftsubtree) (in-order leftsubtree leftnumber)]
          [(cons? rightsubtree) (in-order rightsubtree rightnumber)]))

当我切换分支时,不知何故我的数字参数似乎是错误的。 我需要使用另一个变量来存储这些吗?

【问题讨论】:

    标签: tree scheme inorder


    【解决方案1】:

    这是我的建议:

    ; 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 是如何工作的?
    猜你喜欢
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多