Найти самого низкого ребенка дерева

У меня есть функция, которая добавляет узлы:

public void AddNode(Guid ID, string name,  Guid parentNode)
{
  MyNode node = new MyNode ();
  node.ID = ID;
  node.Name = name;
  node.ParentNode = parentNode;

  AddNode(node);
}

Как я могу сделать функцию, которая находит самые низкие узлы?


person Lelezeus    schedule 26.06.2013    source источник
comment
Помимо обязательного Что вы пробовали?, ваш код показывает, как получить родительский узел, но не как получить дочерний узел.   -  person Kevin Gosse    schedule 26.06.2013
comment
слишком широкий вопрос. укажите, какие структуры данных вы используете.   -  person Tigran    schedule 26.06.2013
comment
нижний = лист или корень?   -  person vc 74    schedule 26.06.2013
comment
Что вы определяете как самое низкое? Любой узел без дочерних элементов или узлы с наибольшей глубиной?   -  person Nolonar    schedule 26.06.2013
comment
самый нижний узел, у которого нет дочерних   -  person Lelezeus    schedule 26.06.2013
comment
@Lelezeus Как должен вести себя ваш код, если существует более 1 нижнего узла?   -  person Nolonar    schedule 26.06.2013
comment
если существует более 1 самого низкого узла, функция должна возвращать все узлы самого низкого уровня. Каждый узел имеет: ID[guid], имя[string], Parent[guid].   -  person Lelezeus    schedule 26.06.2013


Ответы (2)


Без кода перегруженной функции AddNode(Node) мы можем только догадываться.

Если вы сохраните только ссылку на родительский узел, вы не сможете спуститься по дереву, потому что для этого вам нужно будет получить ссылки на дочерние узлы. Вы можете сделать свое дерево двусвязным, также сохранив ссылку на дочерний узел, или вы можете просто сохранить ссылку на дочерний узел. Если вы это сделали, вы можете выполнить рекурсивный поиск в ширину или поиск в глубину, начиная с корня, чтобы найти нужный узел.

person Kenji    schedule 26.06.2013

как найти дочерние узлы в корневом узле [TreeView]

Попробуйте эту ссылку для указателей, и как только вы найдете узел без дочерних элементов, поместите его в список/словарь/и т. д., что бы вы ни хотели использовать.

person David Scott    schedule 26.06.2013