Crear diagrama de árbol a partir de texto con pestañas en R

Quiero hacer un árbol / diagrama de flujo de los siguientes datos que estén debidamente sangrados con pestañas:

Vertebrates
    fish
        goldfish
        clownfish
    amphibian
        frog
        toad
    reptiles
        snake
        lizard
        turtle
        tortoise
    birds
        sparrow
        crow
        parrot
    mammals
        dog
        cat
        horse
        whale

¿Cómo puedo convertir estos datos de árbol en un diagrama de flujo (con flechas que van desde arriba hacia abajo o de izquierda a derecha) (la posición adecuada se determinará contando el número de pestañas en cada fila). Creo que se puede hacer con el paquete "diagrama" (Diagrama de flujo gráfico de transición de estados , http://cran.r-project.org/web/packages/diagram/index.html) pero no pudo entender los pasos exactos. Gracias por tu ayuda.

A continuación se muestra una salida aproximada de muestra deseada. Podría haber cuadros alrededor del texto.

EDITAR: idealmente debería ser una solución flexible para que funcione si se agregan o eliminan niveles. Por ejemplo, agregando 2 tipos de gorriones:

Vertebrates         
    fish        
        goldfish    
        clownfish   
    amphibian       
        frog    
        toad    
    reptiles        
        snake   
        lizard  
        turtle  
        tortoise    
    birds       
        sparrow 
            house
            factory
        crow    
        parrot  
        crane   
    mammals     
        dog 
        cat 
        horse   
        whale   

dat  = structure(list(V1 = c("Vertebrates", NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA), V2 = c(NA, "fish", NA, NA, "amphibian", NA, NA, "reptiles", 
NA, NA, NA, NA, "birds", NA, NA, NA, NA, NA, NA, "mammals", NA, 
NA, NA, NA), V3 = c(NA, NA, "goldfish", "clownfish", NA, "frog", 
"toad", NA, "snake", "lizard", "turtle", "tortoise", NA, "sparrow", 
NA, NA, "crow", "parrot", "crane", NA, "dog", "cat", "horse", 
"whale"), V4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, "house", "factory", NA, NA, NA, NA, NA, NA, NA, NA
)), .Names = c("V1", "V2", "V3", "V4"), class = "data.frame", row.names = c(NA, 
-24L))
> 

Respuestas a la pregunta(1)

Su respuesta a la pregunta