[已编辑!!!]阅读了不同的数据结构并创建了许多(在 C++ 中)我只是想知道我们如何创建一个数据结构,其中每个节点都是一对键 (x,y),其中 x 将指代到 Max Heap 的值和 y 到二叉搜索树的键。我想要同时使用 BST 和 Max Heap 之类的东西(每次都使用元组或键对作为节点)。为了更清楚,从技术上讲,我的意思是在树的每个节点 i 中,将存储一对键 (x,y),其中 x 是键的优先级,y 是键的值。
它将能够支持上述数据结构的所有功能,例如插入和删除。例如,关于删除,元组将通过一系列简单的连续旋转连续深入,直到元组成为叶子。然后,据您所知,删除很容易。如果元组——我们想要删除的元组——是叶节点或内部节点,则可以以与 BST 中相同的方式进行删除。
关于插入,仅根据二叉搜索树的键将元组插入树中。之后,该对将在树中连续移动到更高的位置,直到违反最大堆的基本属性。
此外,我还想到了一些额外的功能。一个附加函数可以是 find_second_next() 之类的函数,将 x 键作为参数,该键已经在树上,该函数将在树的所有大于 x 的 y 键中找到第二个较小的键。另一个函数也可以是 print_between(k1,k2)。此函数将打印树的所有 y 键,其值在 [k1,k2] 范围内。最后,我还想要一个 print_with_higher_priority(x) 函数,它将打印树中所有大于 x 的 x 键。
如果您有一些附加功能,请编写它们!:D
我期待看到您对这个问题的贡献!