访问链接列表

时间:2015-11-30 13:30:40

标签: java data-structures

我的程序包含二进制搜索树和单个链表。 每个操作都对两个数据结构进行。 我有问题: 1)链接两个数据结构,以使两个数据结构点的电流都为同一元素。 2)对节点进行排序 3)最后也是最困难的一个是在链接列表log(n)中获得搜索的性能,因为它在bst中。我不能拥有更多的复杂性。 我使用另一种数据结构的选择是无。 顺便说一句,我使用java作为编程语言。

1 个答案:

答案 0 :(得分:0)

  

1)链接两个数据结构,以使两个数据结构点的电流都为同一个元素。

您可以创建共享元素的树和链接列表。我猜这就是你的意思。

  

2)对节点进行排序

您无法对树进行排序。树的节点是自然排序的,如果你在不同的比较器上对它们重新排序,树就不再有效了。

  

3)最后也是最困难的一个是在链接列表log(n)中获得搜索的性能,因为它在bst中。

您无法在O(logN)中搜索无序列表。这在数学上是不可能的。您可以在O(logN)中搜索有序数组(或数组列表),但这取决于能够索引O(1)中的数组/列表...这是链表无法实现的。

但是......您可以同时实现既是树又是链表的混合数据结构。你会从一个看起来像这样的节点类型开始:

  private class Node <T> {
     private Node<T> next;
     private Node<T> prev;
     private Node<T> left;
     private Node<T> right;
     private T value;
     ...
  }

然后使用leftright字段构建树,使用nextprev字段构建链接列表。

可以使用一个Comparator对数据结构的列表方面进行排序,并且可以对数据结构的树方面进行排序 使用第二个Comparator ...允许O(logN)根据第二个Comparator的排序进行查找。

我不确定这是否符合您的要求(它们没有明确说明),但它相当接近。