我想知道我们是否可以使用二叉搜索树来模拟堆操作(插入,找到最小值,删除最小值),即使用BST来执行相同的工作?
这样做有什么好处吗?
algorithm heap binary-tree
甚至可以使用指针而不是数组来实现二进制堆?我搜索了互联网(包括SO),但没有找到答案.
这里的主要问题是,如何跟踪最后一个指针?当您将X插入堆中时,将X放在最后一个指针处,然后将其冒泡.现在,最后一个指针指向哪里?
而且,当您想要删除根时会发生什么?您将根与最后一个元素交换,然后向下冒泡新根.现在,您如何知道再次删除root时所需的新"最后一个元素"是什么?
c c++ algorithm binary-tree pointers
algorithm ×2
binary-tree ×2
c ×1
c++ ×1
heap ×1
pointers ×1