繁体   English   中英

二进制搜索树到列表方案

[英]Binary Search Tree To List Scheme

我在理解如何使用BST并将其转换为列表而不使用附加或任何高级技术时遇到麻烦。 例如,为您提供了一个BST,每个节点都有一个数字和一个名称(按从最小到最大的字符串排序),并且您想要按顺序输出该BST中值为3或类似值的项目的列表。这些线。

我知道可以递归地完成此操作,但我认为了解此问题的最大问题与左右节点的拆分有关,因为您在这两个节点上都使用了递归,但是您必须以某种方式将它们放到最后清单。

感谢您对理解此问题的任何帮助,在此先感谢您。

因此,假设您有一棵具有值(1 2 3 4)的二叉树。 你知道你不能cons 1 unles你已经有(2 3 4)等,所以实际上你需要积累他们相反。

在二叉搜索树中,顺序遍历是左侧,此值,右侧将使用cons列出,将在右侧,此节点,左侧。

(define (tree->list tree)
  (let rec ((tree tree) (lst '()))
    (if (tree-null? tree)
        lst
        (rec (tree-left tree)
             (cons (tree-value tree)
                   (rec (tree-right tree) lst))))))

它可能看起来不像首先执行右侧操作,但请记住,过程必须先评估其参数,然后才能应用。

没有提到如何为树实现数据结构,因此我只做了一些程序。 最终结果真的无关紧要。

这个问题的简短答案是:您是对的,您需要append 好消息是,(如果您要执行分配任务),则可以轻松实现自己的append 如果您不是在分配作业中执行此操作,请直接使用append

暂无
暂无

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

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