code: def __sort_adjacency_lists(dfs_data):
      new_adjacency_lists = {}
      adjacency_lists = dfs_data['adj']
      edge_weights = dfs_data['edge_weights']
      edge_lookup = dfs_data['edge_lookup']
      for node_id, adj_list in list(adjacency_lists.items()):
          node_weight_lookup = {}
          frond_lookup = {}
          for node_b in adj_list:
              edge_id = dfs_data['graph'].get_first_edge_id_by_node_ids(node_id, node_b)
              node_weight_lookup[node_b] = edge_weights[edge_id]
              frond_lookup[node_b] = 1 if edge_lookup[edge_id] == 'backedge' else 2
          new_list = sorted(adj_list, key=lambda n: frond_lookup[n])
          new_list.sort(key=lambda n: node_weight_lookup[n])
          new_adjacency_lists[node_id] = new_list
      return new_adjacency_lists