混合数据结构对效率的好处

时间:2014-07-22 16:00:37

标签: algorithm inheritance data-structures tree linked-list

我在计算机科学课上完成了这项作业,其中涉及组合不同的数据结构以提高效率

TL; DR ---向下滚动

“”“”构建一个数据结构,其行为类似于链接列表,其中二叉树作为索引结构。它应该能够用作链表并继承自构造索引队列和索引堆栈。您可以假设将放入此数据结构的所有内容都是可比较的,因此索引树将用作二叉搜索树。您应该构建一类迭代器以促进与此数据结构的交互。插入列表可以在列表迭代器指定的位置之后“(有时可以通过find方法返回)”。当然,在继承的索引队列中,插入只会位于队列的后面,但是通过树的索引将需要保留二进制搜索树的顺序,对于继承的索引堆栈也是如此。您应该有插入和删除的方法,以及查找(返回迭代器)和排序的方法(任何排序技术都可以满足这个问题,尽管您可能希望利用从树中派生的固有排序信息!!) 。使用与人一起玩的主要方法测试这个结构(也许通过高度比较?)。“”“”

TL; DR ---让二进制搜索树节点包含与双向链表节点相同的对象有什么好处?

此外,继承如何使用这样的列表?

1 个答案:

答案 0 :(得分:1)

  

使二进制搜索树节点包含与双向链表节点相同的对象有什么好处?

提出相同问题的更好方法可能是"将二进制搜索树(BST)的节点与其他链接连接以从相同节点构建链接列表有什么好处?&# 34;

添加额外链接的好处是能够使用O(1)内存遍历整个树。如果没有这个额外的链接,你需要O(Log(N))内存来迭代树,因为你需要保持每个级别的位置。

"付款"因为这是为链接使用额外的O(N)内存块,以及用于维护数据结构的更复杂的算法。当您迭代同一棵树很多次时,这可能是一个公平的交易,而插入和修改通常很少见。

  

继承如何使用这样的列表?

不是从列表继承而是从树继承,而是为列表和树实现接口。