堆
堆的建立
堆分为最大堆最小堆 具有以下两个性质:
1.结构性;用数组表示的完全二叉树
2.有序性;每一个节点都是他的子树所有节点的最大值或者最小值; 就像金字塔,最上面的最大或者最上面的最小,再层层变小或变大;
堆的插入
这里注意要判断这个最大堆的顺序,就把插进去的数与它的父节点比较大小,而父节点的下标为i/2(左子节点的下标为2i,右子节点的下标为2i+1)
堆的删除
用堆的最后一个元素填补堆顶空缺,然后让这个 “较小的元素” 向下 “沉” 到合适的位置(因为堆顶需要保持最大值,而填补的元素可能较小)。
哈弗曼树
树的建立
哈弗曼树是指每个子节点到树根的路径长*它的权重相加最小的树
也叫做最优二叉树