方案中一棵树的最大和

时间:2018-12-23 15:31:30

标签: recursion tree scheme

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

Example tree

        1
  0     2     5
      3   2

所以我必须做一个函数:(函数’(1((0)(2((3)(2)))(5)))),它应该返回6(在这种情况下)。有2条路径可以给出答案:1 + 2 + 3 = 6和1 + 5 =6。我试图在python found here中“翻译”代码,但是我不知道如何在方案。

1 个答案:

答案 0 :(得分:0)

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

NUMBER?
NULL?
PAIR?

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

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

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

相关问题