332.Reconstruct Itinerary

区分边的遍历和点的遍历

I am pretty sure that Eulerian graph means visit each “EDGE” once and only once.

The one that visited each node once and only once is called Hamiltonian.

Hard!!!

class Solution {
    public List<String> findItinerary(String[][] tickets) {
        Map<String, PriorityQueue<String>> map = new HashMap<>();
        for(int i = 0; i < tickets.length; i++){
            String start = tickets[i][0];
            String end = tickets[i][1];
            PriorityQueue<String> queue = map.getOrDefault(start, new PriorityQueue<String>());
            queue.offer(end);
            map.put(start, queue);
        }
        List<String> ans = new LinkedList<>();
        dfs(map, ans, "JFK");
        return ans;
    }
    public void dfs(Map<String, PriorityQueue<String>> map, List<String> ans,  String start){
        while(map.containsKey(start) && !map.get(start).isEmpty()){
            dfs(map, ans, map.get(start).poll());
        }
        ans.add(0, start);
    }
}

results matching ""

    No results matching ""