Actually, as the "root" node is a special case of node, maybe you need RootHtmlPageNode : HtmlPageNode.
Another idea: as you do not specify what is the difference between a "root" and normal node, maybe just a flag in node specifying if it is root or not also will be a good design.
EDIT: Per your clarification, there is no functional difference between normal and root node, so a simple flag should be enough (or property IsRootNode). If "root" node only supplies a styling data (or any other data for itself and it's children), then you can place this styling data in a separate structure/class and fetch it recursively (based on IsRootNode):
class Node
{
private bool isRootNode;
public bool IsRootNode;
private StylingData stylingData;
public StylingData StylingData
{
set
{
if (this.IsRootNode)
this.stylingData = value;
else
throw new ApplicationException("The node is not root.");
}
get
{
if (this.IsRootNode)
return this.stylingData;
else
return this.parent.StylingData;
}
}
}
This assumes, that each node has a reference to it's parent.
It become way beyond the question, as I do not know the exact design.