繁体   English   中英

方案中一棵树的最大和

[英]Maximum sum of a tree in Scheme

我在尝试做练习时遇到了麻烦,因为我是该语言的新手,以递归的方式思考对我来说有点困难。 我有一棵树(不是必需的二进制树),我需要找到给出最大和的路径。 例如我有树:图像中给定的'(1((0)(2((3)(2)))(5)))

示例树

        1
  0     2     5
      3   2

所以我必须做一个函数:(函数'(1((0)(2((3)(2)))(5))))并且它应该返回6(在这种情况下)。 有2条路径可以给出答案:1 + 2 + 3 = 6和1 + 5 =6。我试图在python中“翻译” 此处找到的代码,但我不知道如何在Scheme中递归执行。

递归非常简单,您只需要检查3种情况:

NUMBER?
NULL?
PAIR?

因此,在方案中,您将像这样构造它:

(define (tree-sum t)
  (cond ((number? t)
         ...)
        ((null? t)
         ...)
        ((pair? t)
         ...)))

pair? 一种是递归情况,其中将car和cdr的总和相加。 希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM