我是图论的新手。我遇到过很多方法,用java表示图形的邻接列表表示的实现,包括:
ArrayList<T>[]
LinkedList<T>[]
ArrayList<ArrayList<T>>
ArrayList<HashSet<T>>
HashMap<Integer, List<T>>
etc.
如果我在图表上需要最少的这些操作,我想知道哪个是用于获得最佳时间复杂度的最佳数据结构:
请您指导哪个标准库数据结构最适合java中图形的邻接列表实现,以获得最佳的空间和时间复杂度? (时间复杂度优先于空间复杂度)
答案 0 :(得分:0)
保持简单,创建一个包含TreeMap的Node类,该TreeMap保存对其所连接节点的引用。
根据您提供的信息。
答案 1 :(得分:0)
我会说LinkedHashSet<LinkedHashSet<T>>
。这是因为:
contains()
方法解决此问题,需要时间O(1)iterator.next()
,每个调用O(1)TreeSet<T>
并在节点类上实现Comparable
接口。 TreeSet
授予您所有操作将在O(log n)中执行,但所有项目都将被排序。