二进制搜索树和最大堆(C ++)

时间:2016-07-05 21:01:44

标签: c++ binary-search-tree max-heap

[EDITED !!!] 阅读了不同的数据结构并创建了许多数据结构(在C ++中)我只是想知道如何建立一个数据结构,其中每个节点都是一对键(x,y),其中x表示Max Heap的值,y表示二进制搜索树的键。我想同时使用像BST和Max Heap这样的东西(每次使用元组或键对作为节点)。为了使它更清楚,从技术上讲,我的意思是在树的每个节点i中将存储一对密钥(x,y),其中x是密钥的优先级,y将是密钥的值。

它将能够支持上述数据结构的所有功能,例如插入和删除。例如,关于删除,元组将通过一系列简单的连续旋转连续地更深,直到元组为叶。那么就你所知,删除很容易。如果元组 - 我们想要删除的元组 - 将是叶子或内部节点,则删除可以与BST中相同的方式完成。

关于插入,仅基于二叉搜索树的键将元组插入树中。之后,该对将在树中连续移动,直到违反最大堆的基本属性。

此外,我还有一些额外的功能。另一个函数可能类似于find_second_next(),将x键作为参数,已经在树上,并且此函数将在树的所有y键中找到大于x的第二个较小的键。 另一个函数也可以是print_between(k1,k2)。此函数将打印树的所有y键,其值在[k1,k2]范围内。最后,我想要一个print_with_higher_priority(x)函数,它将打印树的所有大于x的x键。

如果您有一些额外的功能,请写下来! :d

我期待看到你对这个问题的贡献!

0 个答案:

没有答案