维基百科( http://en.wikipedia.org/wiki/Heap_(data_structure) )中给出的堆定义是
在计算机科学中,堆是一种特殊的基于树的数据结构,它满足堆属性:如果 A 是 B 的父节点,则 key(A) 相对于 key(B) 进行排序,并且在整个堆中应用相同的排序. 要么父节点的key总是大于等于子节点的key,最高的key在根节点(这种堆称为max heap),要么父节点的key小于等于子节点的key孩子们(最小堆)
该定义没有说明树是完整的。例如,根据这个定义,二叉树 5 => 4 => 3 => 2 => 1,其中根元素为 5,所有后代都是右孩子,也满足堆属性。我想知道堆数据结构的精确定义。