【问题标题】:Scheme Path In Binary Tree二叉树中的方案路径
【发布时间】:2015-04-12 23:25:28
【问题描述】:

我有一个练习来在 Scheme 中找到二叉树的路径。 基本上,这就像在 Scheme 中查找从树根到叶子的所有路径。 但是,我们必须打印到达叶子的路径,而不是打印节点的值。 ( print : right left left right for ex)

【问题讨论】:

  • 请参阅下面我的回答以获取有关如何改进此问题的指导
  • 哈马,你有代码可以证明你已经努力解决了吗?
  • 提示:添加一个包含“到目前为止的路径”的函数参数。

标签: scheme


【解决方案1】:

如果您正在谈论查找从根到特定叶子的路径,您基本上可以递归地搜索您的树,同时您应该将一个列表作为参数传递给您的搜索函数,以跟踪已经采用的路径和您的搜索函数应该返回路径列表。

例如,假设您在树中搜索 L,您需要检查 L 是在左子树还是右子树中。找到 L 所在的子树后,您基本上可以将方向添加到路径列表中,您可以执行类似

的操作
(define (search L tree)
    (cond  
          ((null? tree) '()  )
          ((member L leftsubtree ) (cons 'left (search L leftsubtree))
          ((member L rightsubtree) (cons 'right (search L rightsubtree)))))

我们在这里所做的是找到子树 L 所在的位置,然后将方向(左或右)添加到从该子树的父级到 L 的路径的前面。当然,如果您复制并粘贴此代码,它会不行。所以你需要根据你的树表示来实现这个函数,你可能需要为你的案例实现成员函数。我希望它有所帮助。

【讨论】:

    【解决方案2】:
    (define (ab-chemin-aux AB e CH)
    (if (ab-noeud? AB)
    (if (equal? e (ab-etiquette AB))
    CH
    (or (ab-chemin-aux (ab-gauche AB) e (append CH (list "gauche")))
    (ab-chemin-aux (ab-droit AB) e (append CH (list "droit")))))#f))
    (define (ab-chemin AB e)
    (ab-chemin-aux AB e (list)))
    

    我想出了答案,但我忘了在这里问。谢谢您的回答。希望这对某人有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2021-07-24
      • 2016-03-17
      • 2017-08-19
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      相关资源
      最近更新 更多