private void generateChildNodesStruct(ref treeNode1 tmpNode, Random rd, int nodecount, int layer) { tmpNode._children = new object[nodecount]; for (int i = 0; i < nodecount; i++) { treeNode1 t = new treeNode1(); t.father = tmpNode; t.data = rd.Next(100); tmpNode._children[i] = t; } for (int i = 0; i < nodecount; i++) { treeNode1 t = (treeNode1)tmpNode._children[i]; if (t.maxLayer() < layer) { generateChildNodesStruct(ref t, rd, nodecount, layer); } else { if (i == nodecount - 1) { lastNode = t; } } } }
public int maxLayer() { treeNode1 t = this; int i = 0; while (hasFNode(t)) { i++; t = t.father; } return(i); }
public long calculateSelf() { long rtn = data; //Console.WriteLine(data); if (_children != null) { foreach (object i in _children) { treeNode1 t = (treeNode1)i; rtn += t.calculateSelf(); } } return(rtn); }
public long calculateSelf2() { long rtn = 0; //Console.WriteLine(data); if (father.data != -100000) { foreach (object i in father._children) { treeNode1 t = (treeNode1)i; Console.WriteLine(t.data); rtn += t.data; } } return(rtn); }
private void button2_Click(object sender, EventArgs e) { treeNode1 tmpNode = new treeNode1(); tmpNode.data = 100000; treeNode1 father = new treeNode1(); father.data = -100000; tmpNode.father = father; int nodecount = Convert.ToInt16(textBox2.Text); int layer = Convert.ToInt16(textBox3.Text); generateChildNodesStruct(ref tmpNode, new Random(), nodecount, layer); Console.WriteLine("+++++++++++++++++=" + lastNode.calculateSelf()); }
private bool hasFNode(treeNode1 node) { return(node.father.data != -100000); }