堆首先是一个完全二叉树,在这个基础上,堆又可以分为最大堆和最小堆。
最大堆:根节点的数值比左右儿子的数值都大。
最小堆:根节点的数值比左右儿子的数值都小。
在学习过程中,遇到了下面的问题:
建堆时,最坏情况下需要挪动元素次数是等于树中各结点的高度和。问:对于元素个数为12的堆,其各结点的高度之和是多少?
求解参照博客:
我们可以比较容易把树画出来:
最终的运算过程为:3* 1 +2* 2+1*3 = 10
在计算时,我们只计算具有儿子的结点。并且从下到上递增。
堆首先是一个完全二叉树,在这个基础上,堆又可以分为最大堆和最小堆。
最大堆:根节点的数值比左右儿子的数值都大。
最小堆:根节点的数值比左右儿子的数值都小。
在学习过程中,遇到了下面的问题:
建堆时,最坏情况下需要挪动元素次数是等于树中各结点的高度和。问:对于元素个数为12的堆,其各结点的高度之和是多少?
求解参照博客:
我们可以比较容易把树画出来:
最终的运算过程为:3* 1 +2* 2+1*3 = 10
在计算时,我们只计算具有儿子的结点。并且从下到上递增。