如何在O(N)时间内实现用链表创建左式堆?
我的想法是把N个元素以二叉树节点的形式保存在数组中, 然后就和在数组中创建二叉堆的过程一样了, 只是在上滤和下滤的过程中维持链表的结构. 除此之外还有什么其他的方法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我的想法是把N个元素以二叉树节点的形式保存在数组中, 然后就和在数组中创建二叉堆的过程一样了, 只是在上滤和下滤的过程中维持链表的结构. 除此之外还有什么其他的方法吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
设已经生成的链表每个元素就是二叉堆中的节点(数据结构中包含左右子叶的指针,但子叶尚未赋值)
设两个指针
P1 = Head
、P2 = Head
,及深度变量Deep = 1
,步进计数Step = 1
,并进行如下方式扫描书上的课后习题提供了另外一种更高效的方法, 就是通过使用一个队列, 不断从队列中取出两个堆进行合并, 直至队列中只剩下一个堆为止, 这种方法形成的堆是左式堆.