message: Update reconstruct-itinerary.py
diff: +# Time: O(|V| + |E|log|E|)
  +# Space: O(|V| + |E|)
  +# Hierholzer Algorithm
  +
  +class Solution(object):
  + def findItinerary(self, tickets):
  + """
  + :type tickets: List[List[str]]
  + :rtype: List[str]
  + """
  + adj = collections.defaultdict(list)
  + for ticket in tickets:
  + adj[ticket[0]].append(ticket[1])
  + for x in adj.itervalues():
  + x.sort(reverse=True)
  + origin = "JFK"
  + result = []
  + stk = [origin]
  + while stk:
  + while adj[stk[-1]]:
  + stk.append(adj[stk[-1]].pop())
  + result.append(stk.pop())
  + result.reverse()
  + return result
  +
  +
  # Time: O(t! / (n1! * n2! * ... nk!)), t is the total number of tickets,
  # ni is the number of the ticket which from is city i,
  # k is the total number of cities.
  # Space: O(t)
  -
  import collections
  -class Solution(object):
  +class Solution2(object):
  def findItinerary(self, tickets):
  """
  :type tickets: List[List[str]]
  