堆的概念:
- 堆中某个节点的值总是不大于或不小于其父节点的值;
- 堆总是一棵完全二叉树。
以百度的一个面试题为例:
序列{9,12,17,30,50,20,60,65,4,19}构造为堆后,堆所对应的的中序遍历序列可能为
A、65,12,30,50,9,19,20,4,,17,60
B、65,12,30,9,50,19,4,20,17,60
C、65,9,30,12,19,50,4,20,17,60
D、65,12,9,30,50,4,20,9,17,60
一、序列构造成堆:
堆构造原则:先固定已稳定的堆,再 安照从上到下,从左到右的原则堆积。
小顶堆原理:每个结点的值都小于其左孩子和右孩子结点的值
小顶堆映射的数组为
大顶堆
原理与小顶堆相似:每个结点的值都大于其左孩子和右孩子结点的值
大顶堆映射的数组为
注:蓝色为稳定状态,橙色为新增未确定状态,红色为要调整状态
二、堆所对应的的中序遍历序列
中序遍历:左中右 对构造成功的 小顶堆
中序遍历遍历结果:
答案选: B
先序遍历遍历结果:
后序遍历遍历结果: