private void btnInsert_Click(object sender, EventArgs e) { lblInfo.Text = ""; if (intTree != null && (intTree.treeNodes.Count >= MAX_NODES || intTree.getMaxLevel() >= MAX_LEVELS)) { lblInfo.Text = String.Format("No more than {0} nodes or {1} levels allowed", MAX_NODES.ToString(), MAX_LEVELS.ToString()); return; } if (tbNode.Text != String.Empty) { int currentNode = 0; if (Int32.TryParse(tbNode.Text, out currentNode)) { if (currentNode > MAX_NODE_VALUE || currentNode < 1) { lblInfo.Text = "Allowed node values greater than 0 and less than " + MAX_NODE_VALUE.ToString(); } else { try { intTree.Insert(currentNode); highlightedNode = currentNode; pbTree.Refresh(); lblInfo.Text = ""; //drawTree(intTree, currentNode); } catch (DuplicateItemException die) { highlightedNode = 0; //MessageBox.Show("Item exists " + currentNode); lblInfo.Text = "Item exists " + currentNode; lblInfo.ForeColor = Color.Red; } catch (NullReferenceException nre) { intTree = new BinarySearchTree_ <int>(); intTree.Insert(currentNode); highlightedNode = currentNode; //drawTree(intTree,node); pbTree.Refresh(); } } } } }
private void btnNewTree_Click(object sender, EventArgs e) { // Asks the user for the desired number of nodes in the tree // and then generates the tree using random numbers totalTreeNodes = 0; NodesNumber n = new NodesNumber(); n.ShowDialog(); if (totalTreeNodes < 1 || totalTreeNodes > MAX_NODES) { return; } intTree = new BinarySearchTree_ <int>(); Random r = new Random(DateTime.Now.Millisecond); for (int i = 0; i < totalTreeNodes; i++) { bool itemCreated = false; while (!itemCreated) { try { int randomInt = r.Next(1, MAX_NODE_VALUE); intTree.Insert(randomInt); itemCreated = true; } catch (DuplicateItemException die) { } } } highlightedNode = 0; pbTree.Refresh(); lblInfo.Text = ""; lblTrace.Text = ""; //drawTree(intTree, 0); }