There are lots of useful tools for getting information about neighbors in at least two places in the libMesh API:
First on the "Elem" objects themselves:
Looks for all the "neighbors" methods: "find_point_neighbors, find_edge_neighbors, etc"
Secondly, look at the tools in the MeshTools namespace:
The method I suggest that you take a look at is MeshTools::find_nodal_neighbors(). It'll give you back all of the nodes that connect to the one you pass in. The only tricky part to using that method is that you need to build a "nodes_to_elem_map" first that you have to supply as a parameter. You can do that with MeshTools::build_nodes_to_elem_map().
I've implemented all of this in the FeatureFloodCount object if you want to take a look:
modules/phase_field/src/postprocessors/FeatureFloodCount.C
Hopefully that helps,
Cody