Data structures 给定一个键列表,我们如何找到该列表中几乎完整的二叉搜索树?

Data structures 给定一个键列表,我们如何找到该列表中几乎完整的二叉搜索树?,data-structures,binary-search-tree,Data Structures,Binary Search Tree,我在这里看到了用Python实现的想法的答案(对Python不太熟悉)——我正在寻找一种更通用的算法 编辑: 请澄清: 假设我们得到一个整数键列表:23448812743273910 这份名单是任意挑选的。我们将从该列表中创建一个几乎完整(或完全)的二叉搜索树。应该只有一个这样的树……我们如何找到它呢?A的构造使得节点左子树上的所有项都小于该节点,而右子树上的所有节点都大于该节点 完全(或几乎完全)二叉树是指除最后一级之外的所有级别都已完全满,且底部级别向左填充的二叉树 例如,这是一个几乎完整的

我在这里看到了用Python实现的想法的答案(对Python不太熟悉)——我正在寻找一种更通用的算法

编辑:

请澄清: 假设我们得到一个整数键列表:23448812743273910

这份名单是任意挑选的。我们将从该列表中创建一个几乎完整(或完全)的二叉搜索树。应该只有一个这样的树……我们如何找到它呢?

A的构造使得节点左子树上的所有项都小于该节点,而右子树上的所有节点都大于该节点

完全(或几乎完全)二叉树是指除最后一级之外的所有级别都已完全满,且底部级别向左填充的二叉树

例如,这是一个几乎完整的二元搜索树:

     4
   /   \
  2     5
 / \
1   3
这不是:

     3
   /   \
  2     4
 /       \
1         5
因为树的底部标高不是从左侧填充的

如果项目数比二的幂小一(即3、7、15等),则构建树很容易。首先对列表进行排序。然后,将中间元素作为根。所以如果你有
[1,2,3,4,5,6,7]
,根节点是4

对数组的左右半部分递归执行相同的操作

如果项目数不小于2的幂次方,则必须调整起点(根节点),以便底部的行保持填充状态。请注意,当子树长度不小于2的幂次方时,您可能也必须递归地应用该调整


因为这是一个家庭作业,我将留给你去弄清楚。

不清楚你在问什么。请编辑您的问题并添加更多详细信息。给我们举个例子。@JimMischel我编辑了这个问题。希望它现在更清楚。事实上,我正在为期末考试学习…不幸的是,课文中没有解释。但是谢谢你的回答。解释得很好。