using
System;
using
System.Collections.Generic;
class
GFG
{
class
Node
{
public
int
key;
public
List<Node> child;
};
static
Node newNode(
int
key)
{
Node temp =
new
Node();
temp.key = key;
temp.child =
new
List<Node>();
return
temp;
}
static
int
sumNodes(Node root)
{
int
sum = 0;
if
(root ==
null
)
return
0;
Queue<Node> q =
new
Queue<Node>();
q.Enqueue(root);
while
(q.Count != 0)
{
int
n = q.Count;
while
(n > 0)
{
Node p = q.Peek();
q.Dequeue();
sum += p.key;
for
(
int
i = 0; i < p.child.Count; i++)
q.Enqueue(p.child[i]);
n--;
}
}
return
sum;
}
public
static
void
Main(String[] args)
{
Node root = newNode(20);
(root.child).Add(newNode(2));
(root.child).Add(newNode(34));
(root.child).Add(newNode(50));
(root.child).Add(newNode(60));
(root.child).Add(newNode(70));
(root.child[0].child).Add(newNode(15));
(root.child[0].child).Add(newNode(20));
(root.child[1].child).Add(newNode(30));
(root.child[2].child).Add(newNode(40));
(root.child[2].child).Add(newNode(100));
(root.child[2].child).Add(newNode(20));
(root.child[0].child[1].child).Add(newNode(25));
(root.child[0].child[1].child).Add(newNode(50));
Console.Write(sumNodes(root) +
"\n"
);
}
}