堆可以是完整的树吗?

时间:2018-02-19 18:22:53

标签: algorithm tree heap

如果我在节点6下插入一个新节点,树仍然是一个小堆?

4 个答案:

答案 0 :(得分:1)

如果要插入的值至少为6,那么是的,它仍然是最小堆。如果该值小于6,则不会是最小堆。

但是,大多数堆插入算法总是在最初插入值,即在树的最低级别的下一个可用位置,或新级别的第一个,最左侧位置,如果等级已经满了。然后插入过程将继续交换值,直到值为bubbled up到min-heap属性再次有效的位置。

答案 1 :(得分:1)

在向Heap添加每个新元素之后,需要将该元素接收到根或其当前级别之上的任何特定级别,直到它下面的所有节点都大于它。

阅读评论后 : 默认情况下,堆是一个完整的二叉树,据我所知,您可能正在谈论完整的二叉树。

答案 2 :(得分:0)

关于binary heap的维基百科文章说:

  

二进制堆被定义为具有两个附加树的二叉树   约束:[3]

     
      
  • Shape属性:二进制堆是一个完整的二叉树;也就是说,除了最后一个(最深)之外,树的所有级别都是   完全填充,如果树的最后一级没有完成,那么   该级别的节点从左到右填充。
  •   
  • 堆属性:存储在每个节点中的密钥大于或等于(≥)或小于或等于(≤)节点中的密钥   孩子们,根据一些总订单。
  •   

如果堆不能是一个完整的二叉树,那么就不可能有一个带有单个项的堆。因为具有一个节点的二叉树是完整的二叉树。

二进制堆的最后一级无法完成的想法是错误的。如果存在这种限制,数学就无法解决。

答案 3 :(得分:0)

这是最小堆

此树的所有根节点都小于其子节点。

它称为“几乎完整的二进制树”

在这棵树(节点= 6)中没有两个子树,这就是为什么我们不能称呼此完整的二叉树的原因。

  • 但是,(节点= 6)具有一个子树,因此我们可以将其称为“ ALMOST BINARY COMPLETE TREE” < / li>

堆可以是完整的二叉树或几乎完整的二叉树。

如果添加一个数字,然后添加数字> 6,则它将成为完整的二叉树。

谢谢。