Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Algorithm 二进制搜索树/选择根_Algorithm_Data Structures_Binary Search Tree - Fatal编程技术网

Algorithm 二进制搜索树/选择根

Algorithm 二进制搜索树/选择根,algorithm,data-structures,binary-search-tree,Algorithm,Data Structures,Binary Search Tree,我不太确定如何为二叉搜索树选择根(我不想使用任何代码): 5,9,2,1,4,8,3,7,6 我该怎么摘根 这些步骤让我对这个算法感到困惑 我该怎么摘根 你想用哪种方式都行。任何数量的数据都可以是根 不过,您希望选择中间值,在本例中为5。有了这个选择,你的树应该得到平衡,在5的左边有四个节点,在5的右边子树有四个节点 请注意,任何元素都可以是rood(即使是随机选择,也可以是示例中的第一个数字) 嗯,那我为什么要担心找到中位数而不总是选择第一个数字(最简单的选择) 因为你希望你的二叉搜索树(

我不太确定如何为二叉搜索树选择根(我不想使用任何代码):

5,9,2,1,4,8,3,7,6

我该怎么摘根

这些步骤让我对这个算法感到困惑

我该怎么摘根

你想用哪种方式都行。任何数量的数据都可以是根


不过,您希望选择中间值,在本例中为5。有了这个选择,你的树应该得到平衡,在5的左边有四个节点,在5的右边子树有四个节点

请注意,任何元素都可以是rood(即使是随机选择,也可以是示例中的第一个数字)


嗯,那我为什么要担心找到中位数而不总是选择第一个数字(最简单的选择)

因为你希望你的二叉搜索树(BST)尽可能的平衡

如果选择最小值或最大值作为根,则树将达到其最大深度(最坏情况),并将模拟单个链接列表,这也将导致搜索算法的最坏情况。然而,正如Michel所说,为根选择最小项或最大项并不一定会导致退化树。例如,如果为根选择了最小项目,但包含其余项目的右分支是平衡的,则树的高度仅比最佳高度高一级。如果按升序或降序选择节点,则只能得到退化树

请记住,在BST中,必须遵守此规则:

左侧子节点小于父节点,并且 所有正确的子节点都大于父节点



有关更多信息,请阅读?

BST,具有相同值的BST可以有多种形式。例如,包含1,2的树可以是:

1  <- root
 \
  2  <-- right son

1中位数将是一个更好的选择,因为您希望深度更小。
这里有一个例子,根是求中值,下一个也是求中值

                 5 
          3             8
    2         4       7    9
 1                  6          

5等于(1+9)/2。3从天花板(1+4)/2获取(您也可以选择中间带底部作为选择中间带根的角色)

您可以初始化空BST(二元搜索树),然后迭代列表并插入每个项目


你不需要找根,只需要建一棵树。但也许你想要平衡树,你可以插入列表的中间值作为第一个元素,但正确的答案是使用平衡二叉搜索树(AVL树)。

当你说“这个算法”时,你有没有想到一个特定的算法?(我这样问是因为没有一种众所周知的方法来选择根。)为根选择最小项或最大项不一定会导致退化树。例如,如果为根选择了最小项目,但包含其余项目的右分支是平衡的,则树的高度仅比最佳高度高一级。如果你按升序或降序选择节点,你只能得到一棵退化树。很好@JimMischel,我同意,希望你现在更喜欢我的答案!
                 5 
          3             8
    2         4       7    9
 1                  6