Hola:
La raiz de un documento html según el DOM es document.documentElement (que equivale al tag html)... de ahí se desprenden los 2 nodos más importantes que se equivalen con las etiquetas head y body... para recorrer el árbos debes consultar si una etiqueta tiene nodos hijos (hasChildNodes())... y de haberlos recorrer el array childNodes[]... de cada nodo hay que consultar su nodeType para saber si se trata de un nodo etiqueta o texto (incluso podría ser un comentario), y así sucesivamente... puedes revisar el código de mi
Inspector DOM...
Saludos