Member 10004269 Ответов: 1

Как рассчитать количество узлов?


У меня есть следующий класс

public class Node 
{
   public List<node> nodes {get ; set;}

}
Public static void main ()
{

   Node n1 = new Node();
   n1.nodes =new List<node>();
   n1.nodes.Add (new Node());
   Node n2 = new Node ();
   n2.nodes = new List<node>();

   n1.nodes.Add(n2);

}



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

Итак, как мне получить общее количество узлов в основном методе ?

Что я уже пробовал:

Я хочу иметь функцию, которая возвращает количество узлов объекта узла.

1 Ответов

Рейтинг:
10

OriginalGriff

Есть несколько способов, но самый простой - это просто тривиальная рекурсивная функция:

public int Count { get { return GetCount(this); } }
private int GetCount(Node root)
    {
    int count = 0;
    if (root != null && root.Nodes != null)
        {
        count += root.Nodes.Count;
        foreach (Node node in root.Nodes)
            {
            count += GetCount(node);
            }
        }
    return count;
    }


CPallini

5.