Вы должны передавать корневой узел как часть вашего метода Rescure, что-то вроде Rescure(string path, TreeNode currentRoot)
.
Теперь вы можете вызвать currentRoot.Nodes.Add(root)
вместо MailTree.Nodes.Add(root)
, что обеспечит переходыдобавляются только к текущему уровню.Вам также нужно изменить свой вызов в цикле на Rescure(i, root)
.
Наконец, ваш первоначальный вызов Rescure должен включать ссылку на предварительно созданный корневой узел, поэтому что-то вроде Rescure(initialDirectory, initialRootNode)
.
Я бы добавил, что имена ваших методов и переменных должны быть изменены, чтобы отражать их значение.Да, вы рекурсивный, но почему?Лучшее название метода может быть TraverseDirectory
.Точно так же, вместо foreach(string i in sub)
, почему бы не foreach(string directoryName in sub)
?Наличие ясного кода почти так же важно, как наличие правильного кода.