我很难用这个,而且我不知道如何接近它 - 非常感谢你的帮助:
公司尝试构建一个SP树数据结构,以便每个交集包含两个键:一个为SP提供二进制搜索树功能的排序键skey,以及一个为SP提供最小堆的能力的pkey键(假设所有的pkey键彼此不同)。
如何显示存在由n对键(skey,pkey)组成的单一(单个)数据结构SP?
我的意思是,由于pkey(min-heap),它会说堆树将被定义,以便它的每个儿子的价值都大于父母。 但是,由于skey(二叉树),它意味着只有在右侧才会有价值大于父母的元素(左边应该更少,但我不知道它是如何与pkey要求 - 因为它的儿子应该具有比父母更高的价值。我真的不明白它 - 应该获得的树看起来像一条向右的线?
我真的不明白,如果你们能帮助我,我真的很感激。
答案 0 :(得分:2)
我在算法课程中遇到了同样的问题(#34;以色列开放大学")。
尝试使用 treap (treap = tree + heap),你可以在这里看到它是如何工作的:
你可以在书#34;算法简介"的练习13-4中看到一个很好的例子。
这里也有一些很好的解释:
https://threads-iiith.quora.com/Treaps-One-Tree-to-Rule-em-all-Part-1
这是一些解决方案: https://github.com/gzc/CLRS/blob/master/C13-Red-Black-Trees/problem.md
和链的翻译是:
Treap会按照优先级的顺序将节点插入到普通的二叉树中。如果n-1节点的Treap是确定的,因为INSERT算法是确定性算法,也可以确定可以获得n个节点的Treap。