using System.Collections.Generic;
public Node(int value = 0, Node left = null, Node right = null)
public static void Main()
root.Left.Left = new Node(10);
root.Left.Right = new Node(2);
root.Left.Right.Right = new Node(6);
root.Left.Right.Right.Left = new Node(2);
root.Right = new Node(9);
root.Right.Right = new Node(6);
var avgClx = new Dictionary<int, int>();
GetLevelAverage(avgClx, root);
foreach(var v in avgClx.Values)
public static void GetLevelAverage(Dictionary<int, int> avgClx, Node node, int level = 0)
AddToLevelCollection(avgClx, level, node.Value);
GetLevelAverage(avgClx, node.Left, level + 1);
GetLevelAverage(avgClx, node.Right, level + 1);
public static void AddToLevelCollection(Dictionary<int, int> avgClx, int level, int val)
if(avgClx.ContainsKey(level))
avgClx[level] = (avgClx[level] + val) / 2;