title: C# Node pointer issue
body: <p>I am having some trouble setting child nodes using C#. I am trying to build a tree of nodes where each node holds an int value and can have up to a number of children equal to it's value.</p>
  
  <p>My issue appears when I iterate in a node looking for empty(null) children so that I may add a new node into that spot. I can find and return the null node, but when I set the new node to it, it loses connection to the parent node. </p>
  
  <p>So if I add 1 node, then it is linked to my head node, but if I try to add a second it does not become a child of the head node. I am trying to build this with unit tests so here is the test code showing that indeed the head does not show the new node as it's child (also confirmed with visual studios debugger):</p>
  
  <pre><code>  [TestMethod]
    public void addSecondNodeAsFirstChildToHead()
    {
       //arange
       Problem3 p3 = new Problem3();
       p3.addNode(2, p3._head);
       Node expected = null;
       Node expected2 = p3._head.children[0];
       int count = 2;
  
       //act
       Node actual = p3.addNode(1, p3._head);
       Node expected3 = p3._head.children[0];
  
       //assert
       Assert.AreNotEqual(expected, actual, "Node not added"); //pass
       Assert.AreNotEqual(expected2, actual, "Node not added as first child"); //pass
       Assert.AreEqual(expected3, actual, "Node not added as first child"); //FAILS HERE
       Assert.AreEqual(count, p3.nodeCount, "Not added"); //pass
    }
  </code></pre>
  
  <p>Here is my code.</p>
  
  <pre><code>public class Node
     {
        public Node[] children;
        public int data;
  
        public Node(int value)
        {
           data = value;
           children = new Node[value];
  
           for(int i = 0; i &lt; value; i++)
           {
              children[i] = null;
           }
        }
     }
  
     public class Problem3
     {
        public Node _head;
        public int nodeCount;
  
        public Problem3()
        {
           _head = null;
           nodeCount = 0;
        }
  
        public Node addNode(int value, Node currentNode)
        {
           if(value &lt; 1)
           {
              return null;
           }
  
           Node temp = new Node(value);
  
           //check head
           if (_head == null)
           {
              _head = temp;
              nodeCount++;
              return _head;
           }
  
           //start at Current Node
           if (currentNode == null)
           {
              currentNode = temp;
              nodeCount++;
              return currentNode;
           }
  
           //find first empty child
           Node emptyChild = findEmptyChild(currentNode);
           emptyChild = temp;
           nodeCount++;
           return emptyChild;
        }
  
        public Node findEmptyChild(Node currentNode)
        {
           Node emptyChild = null;
           //find first empty child of current node
           for (int i = 0; i &lt; currentNode.children.Length; i++)
           {
              if (currentNode.children[i] == null)
              {
                 return currentNode.children[i];
              }
           }
           //move to first child and check it's children for an empty
           //**this causes values to always accumulate on left side of the tree
           emptyChild = findEmptyChild(currentNode.children[0]);
           return emptyChild;
        }
  </code></pre>
  
  <p>I feel the problem is I am trying to treat the nodes as pointers like I would in C++ but that it is not working as I expect.</p>