Для меня это выглядит как обычная DataGrid с несколькими установленными группировками
Так что в вашем случае вы должны создать DataGrid, который группирует по Root, Node #, Node 2nd Number и Node 3rd Number.
Также сгладьте ваш список NodeData, чтобы он представлял собой единый список с каждым элементом, содержащим свойства для Root, NodeLevel1, NodeLevel2 и NodeLevel3