Вы не указали, используете ли вы C # или VB, но подход в любом случае одинаков.
Вы начинаете с создания TreeNode для каждого индивидуума верхнего уровня (те, у которых нет ManagerID или со специальным кодом ManagerID, который указывает на верхний уровень).
Затем, рекурсивно, для каждого человека, который отчитывается перед текущим менеджером, создайте новый TreeNode и добавьте его в качестве дочернего для текущего менеджера. Найдите всех, кто отчитывается перед ним, и примените к ним эту функцию. Остановитесь, когда никто не отчитывается перед текущим человеком.
Итак, если у вас есть DataSet с деталями этой таблицы, вы бы сделали что-то вроде этого (пример VB):
Sub PopulateTreeNode(
CurrentNode As TreeNode,
CurrentManagerID As String,
Table As DataTable
) As TreeNode
For Each Row As DataRow In _
DataTable.Select("ManagerID = '" & CurrentManagerID & "'")
Dim CurrentUser As String = Row("ID").ToString()
Dim Node As New TreeNode(CurrentUser)
PopulateTreeNode(Node, CurrentUser, Table)
CurrentNode.Nodes.Add(Node)
Next
End Sub