alienOrder = function(words) {
    const { graph, seen, buffer } = buildGraph(words);

    if (!canBuildGraph(words, graph)) return '';

    for (const [ char ] of graph) {
        if (!dfs(char, graph, seen, buffer)) return '';
    }

    return buffer.reverse().join('')
}
DFS
https://leetcode.com/problems/alien-dictionary/
@param {string[]} words
@return {string}