堆和二叉树的区别

以小根堆为例,堆的特点是双亲结点的关键字必然小于等于孩子结点的关键字,而两个孩子结点的关键字没有次序规定

而二叉排序数中,每个双亲结点的关键字均大于左子树结点的关键字,均小于右子树j结点的关键字,也就是说,每个双亲结点的左右孩子的关键字有次序关系,

这样,当对两种树执行中序遍历后,二叉树会得到一个有序的序列,而堆不一定。


堆是什么?堆是一种特殊的完全二叉树只不过父亲与儿子节点间有关系。也就是首先要满足完全二叉树的定义,只有右下角可能有缺。

所有父结点都比子结点要小的完全二叉树我们称为最小堆(Java中的优先级队列PriorityQueue默认最小堆)。反之,如果所有父结点都比子结点要大,这样的完全二叉树称为最大堆。

这里与二叉搜索树的区别是搜索树中根为中间值,左小右大!
 

posted @ 2023-02-15 11:57  Python喵  阅读(393)  评论(0)    收藏  举报