擅长:python、mysql、java
<p><code>A</code>和<code>B</code>是经典的邻接列表。<code>C</code>是一个邻接列表,但是使用<code>O(1)</code>结构而不是<code>O(N)</code>结构作为列表。但实际上,您应该使用<code>D</code>,即邻接集。你知道吗</p>
<p>在Python中,<code>set.contains(s)</code>是一个<code>O(1)</code>操作。你知道吗</p>
<p>所以我们可以</p>
<pre><code>graph = { 1: set([2]), 2: set([1, 3], 3: set() }
</code></pre>
<p>那么我们的<code>addEdge(from, to)</code>就是</p>
<pre><code>graph[from].add(to)
graph[to].add(from)
</code></pre>
<p>我们的<code>hasEdge(from,to)</code>只是</p>
<pre><code>to in graph[from]
</code></pre>