据我了解,在max-heap中,每个节点的值大于或等于其所有子节点。这同样适用于二叉搜索树,但在此数据结构中,同一级别(兄弟)上的节点结构正确也很重要。
这让我觉得二叉搜索树基本上是一个带有额外属性的最大堆。所以每个BST也是最大堆。我是对的吗?
答案 0 :(得分:1)
没有
结构差异
基本上,树和堆的结构不同。二叉搜索树仍然是树,因此任何节点都可以有少于2个子。但是最大堆仍然是堆,因此只有倒数第二级别的节点可以有少于2个孩子。
获取元素的排序列表
BST - > O(N) =以递归方式遍历。
Max Heap - > O(N Log N) =通过删除root中的最大值N次,每次操作需要O(Log N)时间
亲子关系
BST是一种树数据结构,它拥有父母与子女之间以及儿童之间的关系。但是,堆只拥有父和子之间的关系,而不是孩子之间的关系。
如果您需要比较,您可以将二进制最大堆视为"完成"的扩展名。二叉树( 不完整BST! ),每个节点的所有孩子都比自己小(正如{{3}所述})
答案 1 :(得分:0)
没有;在BST中,根不比左子树中的任何内容大,但没有小而不是右边的任何内容。如你所说,最大堆中的根大于两个子树中的任何内容。所以你可以说BST有一个额外的属性,但是这个属性使它不是最大堆。
答案 2 :(得分:0)
二进制堆是二叉树的特例(但不是BINARY SEARCH树!),但不是相反。二进制堆是具有shape和heap属性的二叉树:它是一个COMPLETE树,除了最后一个之外,所有级别都完全填充,并且所有节点都大于(小于)或等于其子节点。