Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何使用递归将整数序列插入到二叉搜索树中?_Sorting_Recursion_Binary Tree_Binary Search Tree_Inorder - Fatal编程技术网

Sorting 如何使用递归将整数序列插入到二叉搜索树中?

Sorting 如何使用递归将整数序列插入到二叉搜索树中?,sorting,recursion,binary-tree,binary-search-tree,inorder,Sorting,Recursion,Binary Tree,Binary Search Tree,Inorder,我正在尝试编写一个实现BST的递归函数。然而,我面临着许多无法解决的问题 一开始,我希望我的函数在每个递归中插入位于数组的中间索引中的“ARR[]”项,并将其插入BST“T”中。但是,我不知道一般情况应该是什么。我试图实现这个逻辑,但我得到了所有错误的输出 所以我的问题是,我错在哪里?我应该怎么做才能为这个递归函数创建一个合适的通用情况 我的代码: 听起来好像您正试图构建一个包含排序列表元素的BST。将来最好能更仔细地说明您试图解决的问题 如果我猜对了,算法需要返回新BST的根 您想要的直觉来自

我正在尝试编写一个实现BST的递归函数。然而,我面临着许多无法解决的问题

一开始,我希望我的函数在每个递归中插入位于数组的中间索引中的“ARR[]”项,并将其插入BST“T”中。但是,我不知道一般情况应该是什么。我试图实现这个逻辑,但我得到了所有错误的输出

所以我的问题是,我错在哪里?我应该怎么做才能为这个递归函数创建一个合适的通用情况

我的代码:

听起来好像您正试图构建一个包含排序列表元素的BST。将来最好能更仔细地说明您试图解决的问题

如果我猜对了,算法需要返回新BST的根

您想要的直觉来自BST的结构:任何节点的子树本身就是BST

因此,假设我们使BST创建者成为一个函数,可以对排序输入列表的任何块进行操作,并将其转换为BST

大概是这样的:

def build_bst(elements: List[int], first_index: int, last_index: int) -> Node:
现在我们可以使用关于BST结构的直觉

该算法在一些简单的算法中使用
first_index
last_index
来获得块中间附近元素的索引
m
<代码>元素[m]成为新创建节点中的数据。这将是BST的根。然后请注意,元素
first_index
m-1
必须位于新节点的左子树中
m+1
to
last_index
必须位于右侧子树中。使用递归调用构建这些子树,将返回值分配为新节点的左和右子级。然后返回节点

这就是一般递归的内容。我将让您了解基本情况以及如何启动递归


注意:如果您愿意将块作为独立列表进行实际计算,那么可以去掉索引参数。这看起来很优雅,但真正的实现可能需要额外的复制,这取决于语言和编程技术。我在这里展示的方法通常更有用。

欢迎使用堆栈溢出!请不要使用图像发布代码或错误消息,除非图像传达的内容超出了代码或错误消息。如果你需要,你应该用图像中包含的文本来扩充图像,因为文本图像是不可搜索、不可访问的,而且它们会使试图帮助你的人更加困难。请同时阅读。