判别以下序列是否为堆。如果不是,则把它调整为堆。
判别以下序列是否为堆。如果不是,则把它调整为堆。
(1)(100,86,48,73,35,39,42,57,66,21);
(2)(12,70,33,65,24,56,48,92,86,33)。
[解决办法]
看是不是堆,只需要判断是不是所有节点,都大于或小于子节点,即节点n需要大于或小于2*n节点和2*n+1节点
第一个好像是堆
第二个不是,一种可能的调整方式为:(12,24,35,65,33,56,48,92,86,70)
[解决办法]
堆,首先看你是想要大根堆还是小根堆,大根堆就是根结点大于左右孩子,小根堆就是很结点小于左右孩子,
第一个是个大根堆,第二个如果是大根堆的话是92 86 56 70 33 33 48 65 12 24
这里只是建堆,不是堆排序
[解决办法]
好像是调整堆,不是建堆吧。