public GSTree(bool positionTree) { root = new GSTreeNode(); GSTreeNode left = new GSTreeNode(); GSTreeNode right = new GSTreeNode(); root.value = GSDictionaries.GetRandomDoubleArgFunction(); left.value = "(" + GetRandomFloat() + ")"; right.value = "(" + GetRandomFloat() + ")"; root.left = left; root.right = right; this.positionTree = positionTree; }
public void InsertRandomNode() { System.Random rand = new System.Random(); List <GSTreeNode> nodes = new List <GSTreeNode>(); GSTreeTraverse.GetDoubleArgFunctionNodes(root, nodes); GSTreeNode selNode = nodes[rand.Next(nodes.Count)]; GSTreeNode tempNode = selNode.left; GSTreeNode newNode = new GSTreeNode(); selNode.left = newNode; if (rand.Next(0, 2) == 1) { newNode.value = GSDictionaries.GetRandomDoubleArgFunction(); newNode.left = tempNode; newNode.right = new GSTreeNode(); string randValue; if (rand.Next(0, 2) == 1) { randValue = "(" + GetRandomFloat() + ")"; } else { if (positionTree) { randValue = "(" + GSDictionaries.GetRandomPositionVariable() + ")"; } else { randValue = "(" + GSDictionaries.GetRandomColorVariable() + ")"; } } newNode.right.value = randValue; } else { newNode.value = GSDictionaries.GetRandomSingleArgFunction(); newNode.left = tempNode; } }