public Node populateTree(Node r, int[] data, int i)
 {
     if (i < data.Length)
     {
         r = new Node(data[i]);
         r.SetLeft(populateTree(root.GetLeft(), data, i * 2 + 1));
         r.SetRight(populateTree(root.GetRight(), data, i * 2 + 2));
     }
     return(r);
 }
        public int GetMaxPath(Node n)
        {
            int left  = 0;
            int right = 0;
            int max   = n.GetData();

            if (n.GetLeft() != null)
            {
                left = GetMaxPath(n.GetLeft());
            }
            if (n.GetRight() != null)
            {
                right = GetMaxPath(n.GetRight());
            }
            if (left > right)
            {
                max += left;
            }
            else
            {
                max += right;
            }
            return(max);
        }