def basic_traversal_of_molecule_graph(graph, 
                                        node_idx, 
                                        current_path=None):
    """
    This recursive function returns a basic traversal of a molecular graph. 
    This traversal obeys the following rules:
        1. Locations may only be visited once
        2. All locations must be visted
        
    """
    if current_path == None:
        current_path = []
        
    path = [node_idx]
    current_path += [node_idx]
    neighbors = graph.adj[node_idx]
    
    ### Need to take care of cycles
    for entry in neighbors:
        if entry in current_path:
            continue
        neigh_path = basic_traversal_of_molecule_graph(graph, entry, current_path)
        if len(neigh_path) > 0:
            path += neigh_path
            current_path += path
    
    return path