使用基于数组的二叉树实现而不是旧的基于节点的实现是否有任何速度/空间/一般性能提升?我理解旋转或基于数组的树的任何其他复杂修改都是可怕的,但是在简单的二叉树实现的情况下,你会说通过数组实现它会更好吗?
答案 0 :(得分:0)
我猜您正在寻找Binary Heap。
答案 1 :(得分:0)
基于数组的版本不使用堆分配,因此它很可能全部适合缓存,并且需要更简单的指针数学,从而加快遍历所需的读取量。如果你现在的大小是有限的并且在编译时受限,那么这是更快的解决方案。
答案 2 :(得分:0)
如果您的主要工作流程包括构建树,然后通过一系列delete
和delete-range
操作将其拆除,则嵌入在数组中的二叉树可能比基于指针的树快得多树。见TeardownTree。另请参阅this answer。