C++ 同时使用二叉搜索树和最大堆(C+;+;)

C++ 同时使用二叉搜索树和最大堆(C+;+;),c++,binary-search-tree,max-heap,C++,Binary Search Tree,Max Heap,[编辑!!!]阅读了不同的数据结构并创建了许多数据结构(在C++中),我只是想知道如何创建一个数据结构,其中每个节点都是一对键(x,y),其中x表示最大堆的值,y表示二叉搜索树的键。我希望同时使用BST和Max堆(每次使用元组或键对作为节点)。更清楚地说,从技术上讲,我的意思是在树的每个节点I中存储一对密钥(x,y),其中x是密钥的优先级,y是密钥的值 它将能够支持上述数据结构的所有功能,例如插入和删除。例如,关于删除,元组将通过一系列简单的连续旋转连续深入,直到元组成为一片叶子。那么就你所知,

[编辑!!!]阅读了不同的数据结构并创建了许多数据结构(在C++中),我只是想知道如何创建一个数据结构,其中每个节点都是一对键(x,y),其中x表示最大堆的值,y表示二叉搜索树的键。我希望同时使用BST和Max堆(每次使用元组或键对作为节点)。更清楚地说,从技术上讲,我的意思是在树的每个节点I中存储一对密钥(x,y),其中x是密钥的优先级,y是密钥的值

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

关于插入,元组将仅基于二进制搜索树的键插入到树中。之后,该对将在树中连续向上移动,直到违反max heaps的基本属性

此外,我脑子里还有一些额外的功能。另一个函数可能类似于find_second_next(),将树上已经存在的x键作为参数,该函数将在树上所有大于x的y键中查找第二个较小的键。 另一个功能也可以是(k1,k2)之间的打印。此函数将打印值在[k1,k2]范围内的树的所有y键。最后,我还希望有一个具有更高优先级(x)功能的print_,它将打印树中大于x的所有x键

如果您有一些附加功能,请编写它们!:D


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

请您更详细地定义所需数据结构的功能好吗?@Leon我刚刚编辑了我的问题…谢谢您的努力,但我仍然不明白您打算如何将BST的功能与
(x,y)
对的最大堆结合起来。你的意思是
y
必须作为BST操作的密钥,并且你还希望能够快速检索到具有最大
x
的节点吗?@Leon原谅我的天真……我以为你说的与我得到的不同。然而,我编辑了我的问题(再一次!:),在我的问题中解释了元组和x,y键的本质。每当我发现一些东西不够清晰时,我就会编辑我的问题,以便所有思考这个问题的人都能看到。这就是为什么我没有通过评论直接回答你。谢谢你的评论!没有人(再次)对我的问题感兴趣,不是吗?