Scheme Racket:在二叉搜索树中插入新节点

Scheme Racket:在二叉搜索树中插入新节点,scheme,binary-tree,racket,racket-student-languages,Scheme,Binary Tree,Racket,Racket Student Languages,假设我们有一个二叉树结构: (define-struct tree-node (left right node)) 我在创建二进制搜索树时遇到问题。我的主要问题是,我不知道如何将节点插入到树中,或在生成树节点结构中覆盖左侧或右侧。 假设我们的树长为8,如果left或right为空,我想插入一个新节点。我的问题是,我该怎么走那么深?这可能是递归的吗?如果是,我该怎么做 只能使用中间级别。中的设计配方回答了此问题。第19.5节专门讨论了二进制搜索树。然而,在这里最有帮助的材料可能是第8节和

假设我们有一个二叉树结构:

(define-struct tree-node (left right node))    
我在创建二进制搜索树时遇到问题。我的主要问题是,我不知道如何将节点插入到树中,或在生成树节点结构中覆盖左侧或右侧。
假设我们的树长为8,如果left或right为空,我想插入一个新节点。我的问题是,我该怎么走那么深?这可能是递归的吗?如果是,我该怎么做


只能使用中间级别。

中的设计配方回答了此问题。第19.5节专门讨论了二进制搜索树。然而,在这里最有帮助的材料可能是第8节和第9节中的内容。首先,您需要一个二进制搜索树的数据定义。然后,您需要为各种情况编写测试用例,包括基本情况(插入到空节点中)。然后,您需要遵循与数据定义关联的模板

到目前为止,您有什么代码?如果您正在创建一个二元搜索树,那么插入是基于节点值的顺序比较,而不是基于树的长度,或者左/右是否为empty@naomik我知道插入是基于节点值的顺序比较,但当所有节点都“满”时会发生什么假设长度为8。难道我们不需要比较节点的值,并根据这些值找到我们的方法,然后创建一个新的叶/节点吗?马克,不幸的是,由于上面列出的问题,我不知道该如何插入一个空节点。您提供给我的资料/链接涉及的列表与结构不符,以及如何在结构中插入emty节点或字段;你只要把新的还给我。例如:如何将数字3插入空列表?谢谢!我会用(cons 3’())来做。对于一个列表来说很容易,因为你有缺点,而且它是“一维的”。结构是n维的,但我有一个想法。请告诉我你对它的看法。首先,我想选择随机根。然后我想为各种情况编写测试用例,并根据(make tree node random node)(调用函数)中的情况调用它们,这样就可以构建树。你觉得怎么样?我认为局部搜索会很有用…你对列表的处理方式基本上就是对二进制搜索树的处理方式。形状没什么大不了的。我对你提到的“随机根”感到震惊。BST只有一个根。。。让我再次建议您为BST创建一个数据定义,编写测试用例,并遵循设计方法。(定义示例树(使树节点为空20)(使树节点为空22)21)-->这是一个示例树。我应该如何像列表一样对待结构?我做不到(cons make tree node…(meke tree node…)我已经阅读了你提供给我的链接,但是我找不到对我有用的东西。我能想到的在列表中构建内容的唯一方法是调用一个函数,它位于结构的左侧和右侧字段中。