Recorrido del gráfico con Networkx (Python)

Estoy jugando un poco con Networkx para gestionar un gráfico de dependencias. Digamos que tengo este gráfico que cada letra representa un servidor

>>> G = nx.Graph()
>>> G.add_edge("A","B")
>>> G.add_edge("A","H")
>>> G.add_edge("H","C")
>>> G.add_edge("B","C")
>>> G.add_edge("B","D")

           A
         /   \
       H       B
     /        /  \
   C         C     D 

Entonces, aquí podemos ver que antes de comenzar con A necesitamos comenzar con H y B y para comenzar con H debemos comenzar con C y luego para comenzar con B debemos comenzar con C y D

Al juguetear un poco con Networkx descubrí que puedo conseguirlo haciendo un recorrido dfs

print nx.dfs_successors(G,"A")
{A:[H,B], H:[C], B:[D] }

Pero tengo un problema con ese método. Como puede ver cuando hay dos letras iguales en el árbol, Networkx solo eligió colocar una de ellas en la estructura final (que es correcta). Pero necesito tener la estructura completa. ¿Cómo puedo forzar a Networkx para que agregue la estructura B? : [D, C] ??

Quiero precisar que haciendo

>>> nx.dfs_successors(G,"B")
{'B': ['C', 'D']}

Por lo tanto, todo es "Internamente" correcto, son solo los dfs_successors los que no lo muestran como deseo.

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta