二叉搜索树是二进制最大堆的特例吗?

时间:2014-12-04 14:32:09

标签: data-structures heap binary-search-tree

据我了解,在max-heap中,每个节点的值大于或等于其所有子节点。这同样适用于二叉搜索树,但在此数据结构中,同一级别(兄弟)上的节点结构正确也很重要。

这让我觉得二叉搜索树基本上是一个带有额外属性的最大堆。所以每个BST也是最大堆。我是对的吗?

3 个答案:

答案 0 :(得分:1)

没有

  1. 结构差异

    基本上,树和堆的结构不同。二叉搜索树仍然是树,因此任何节点都可以有少于2个子。但是最大堆仍然是堆,因此只有倒数第二级别的节点可以有少于2个孩子

  2. 获取元素的排序列表

    BST - > O(N) =以递归方式遍历。

    Max Heap - > O(N Log N) =通过删除root中的最大值N次,每次操作需要O(Log N)时间

  3. 亲子关系

    BST是一种树数据结构,它拥有父母与子女之间以及儿童之间的关系。但是,堆只拥有父和子之间的关系,而不是孩子之间的关系。

  4. 如果您需要比较,您可以将二进制最大堆视为"完成"的扩展名。二叉树 不完整BST! ),每个节点的所有孩子都比自己小(正如{{3}所述})

答案 1 :(得分:0)

没有;在BST中,根不比左子树中的任何内容大,但没有而不是右边的任何内容。如你所说,最大堆中的根大于两个子树中的任何内容。所以你可以说BST有一个额外的属性,但是这个属性使它不是最大堆。

答案 2 :(得分:0)

二进制堆是二叉树的特例(但不是BINARY SEARCH树!),但不是相反。二进制堆是具有shape和heap属性的二叉树:它是一个COMPLETE树,除了最后一个之外,所有级别都完全填充,并且所有节点都大于(小于)或等于其子节点。