/// <summary> /// Adds the specified list. /// </summary> /// <param name="list">The list.</param> public void Add(SortedTreeNodeList list) { foreach (SortedTreeNode node in list) { Add(node); } }
/// <summary> /// Initializes a new instance of the <see cref="SortedTree{SortedTreeNodeList}"/> class. /// </summary> /// <param name="list">The list.</param> public SortedTreeNodeList(SortedTreeNodeList list) : base(list.Count) { foreach (SortedTreeNode node in list) { Add(node); } }
/// <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); }
/// <summary> /// Gets the subtree from node. /// </summary> /// <param name="StartValue">The start value.</param> public SortedTree <T> GetSubtreeFromNode(T StartValue) { SortedTree <T> TreeToBeReturned = (SortedTree <T>)((ICloneable)this).Clone(); TreeToBeReturned.MoveNodeToRoots(StartValue); // no we have to remove other roots int idx = 0; SortedTreeNodeList nodelist = TreeToBeReturned.GetRoots(); while (nodelist.Count > 1) { if (!nodelist[idx].Value.Equals(StartValue)) { TreeToBeReturned.RemoveValue(nodelist[idx].Value, false); } else { idx++; } nodelist = TreeToBeReturned.GetRoots(); } return(TreeToBeReturned); }
/// <summary> /// Creates a new object that is a copy of the current instance. /// </summary> /// <returns> /// A new object that is a copy of this instance. /// </returns> object ICloneable.Clone() { SortedTree <T> newtree = new SortedTree <T>(); SortedTreeNodeList currentelementlist = null; // lista elementow z aktualnej warstwy SortedTreeNodeList nextlevelelementlist = null; // lista elementow z nastepnej warstwy // kopiujemy najpierw roots elements currentelementlist = new SortedTree <T> .SortedTreeNodeList(m_Roots); //a teraz w petli while (currentelementlist.Count > 0) { nextlevelelementlist = new SortedTree <T> .SortedTreeNodeList(); foreach (SortedTreeNode node in currentelementlist) { nextlevelelementlist.Add(node.GetChildNodes()); node.AddThisNodeToAnotherTree(ref newtree); } currentelementlist = new SortedTree <T> .SortedTreeNodeList(nextlevelelementlist); } return(newtree); }
/// <summary> /// Initializes a new instance of the <see cref="SortedTree{T}"/> class. /// </summary> public SortedTree() { m_Roots = new SortedTreeNodeList(); }