using System.Collections.Generic;
public List<Node> Children;
public void Insert(int key, string val)
this.Children= new List<Node>();
this.Children.Add(new Node(){Key = key, Value = val});
public NaryTree(Node root)
public Node Search(int key)
Stack<Node> stack = new Stack<Node>();
var current = stack.Pop();
if( current.Children!=null)
foreach(var node in current.Children)
public static void Main()
NaryTree tree = new NaryTree(
Children = new List<Node>()
Children = new List<Node>()
Children = new List<Node>()
new Node{ Key=6, Value = "Six" }, new Node{Key=7, Value="Seven"}, new Node{Key=8, Value="Eight"},
new Node{ Key=9, Children = new List<Node>() {new Node{Key=10}, new Node{Key=11} }}
Key = 12, Value="Twelve",
Children = new List<Node>() { new Node{Key=13, Value = "Thirteen"}, new Node{Key=14, Value = "Fourteen"}}
var node = tree.Search(7);
Console.WriteLine(node==null ? "Not Found" : node.Value);
Console.WriteLine(node==null ? "Not Found" : node.Value);
Console.WriteLine(node==null ? "Not Found" : node.Value);