我认为可以通过以下过程在O(NlogN)时间内完成。
http://www.cs.rit.edu/~rpj/courses/bic2/studios/studio1/studio121.html
假设树中有一个元素,其左子树和右子树都是堆。
E H1 H2
通过使元素E游至正确位置,可以在logN时间内对由E,H1和H2形成的Tree进行堆积。
因此,我们开始自下而上构建堆。转到最左侧的子树,并通过简单比较将其转换为堆。这样做也是因为它是同级的。然后上升并将其转换为堆。
同样,对每个元素都执行此操作。
编辑:如评论中所述,复杂度实际上是O(N)。



