/// <summary> /// Adds the node. /// </summary> /// <param name="NodeValue">The node value.</param> /// <returns></returns> public SortedTreeNode AddNode(T NodeValue) { if (GetNode(NodeValue) != null) { throw new SortedTreeNodeException("this tree already contains this value"); } SortedTreeNode newnode = new SortedTreeNode(NodeValue, this, null, 0); m_Roots.Add(newnode); RaiseTreeHasChangedEvent(); return(newnode); }
/// <summary> /// Gets the nodes from level. /// </summary> /// <param name="level">The level.</param> /// <returns></returns> public SortedTreeNodeList GetNodesFromLevel(int level) { MarkAllUnvisited(); SortedTreeNodeList nodestobereturned = new SortedTreeNodeList(); foreach (SortedTreeNode node in m_Roots) { nodestobereturned.Add(node.GetNodesFromLevel(level)); } return(nodestobereturned); }
/// <summary> /// Gets the nodes from level. /// </summary> /// <param name="level">The level.</param> /// <returns></returns> public SortedTreeNodeList GetNodesFromLevel(int level) { SortedTreeNodeList nodestobereturned = new SortedTreeNodeList(); if (!Visited && level > 0) { Visited = true; if (Height == level) { nodestobereturned.Add(this); } else { //zakladamy ze pewien element nie moze miec siebie samego jako dziecka foreach (KeyValuePair <int, SortedTreeNode> KVPNode in mChildNodes) { nodestobereturned.Add(KVPNode.Value.GetNodesFromLevel(level)); } } } return(nodestobereturned); }