internal void ParentCleanup() { SortedTreeNodeSortedList myparentclonnedlist = (SortedTreeNodeSortedList)((ICloneable)ParentNodes).Clone(); foreach (KeyValuePair <int, SortedTreeNode> kvpnode in myparentclonnedlist) { if (MyParentTree.GetNode(kvpnode.Value.Value) == null) { //oznacza to ze dany node ma na swojej liscie tego parenta a drzewo juz nie ma, nalezy wiec go usunac: ParentNodes.Remove(kvpnode.Key); } } foreach (KeyValuePair <int, SortedTreeNode> kvpnode in mChildNodes) { kvpnode.Value.ParentCleanup(); } }
/// <summary> /// Adds the this node to another tree. /// </summary> /// <param name="tree">The tree.</param> public void AddThisNodeToAnotherTree(ref SortedTree <T> tree) { if (ParentNodes.Count == 0) { tree.AddNode(Value); } else { foreach (KeyValuePair <int, SortedTreeNode> kvpnode in ParentNodes) { int ParentConnector = kvpnode.Value.GetConnectorNumberOfSpecifiedNode(this); //zanim dodamy nowy element musimy sprawdzic czy juz jest dodany jego parent if (tree.GetNode(kvpnode.Value.Value) != null) { tree.AddNode(kvpnode.Value.Value, ParentConnector, Value, kvpnode.Key); } } } }