数据结构总结
堆分为大顶堆和小顶堆。相比AVL来说,堆不是中序遍历有序的,而是:
维护了所有的子节点必须比根节点大/小,上图是大顶堆,因此是所有儿子都比父亲小。
记住,树都用数组来进行标识:
插入
如果要插入呢:新元素放在了数组末尾,对应了树的位置
然后进行上溯,因为父节点一定是需要大于子节点的,因此不断与父节点交换
删除,根与其他节点
如果进行删除,分为两种情况,如果是根的话,将末尾元素移动到根
然后进行下溯:
删除任意节点的时候,比如删除上面的7,我们首先将其与末尾元素交换:
然后上溯或者下溯修复:
