Exemple #1
0
 internal void RemoveParent(TreeElement<T> parent)
 {
     _parents.Remove(parent);
     parent._children.Remove(this);
     PathCountRecalulate();
 }
Exemple #2
0
 internal void RemoveChild(TreeElement<T> child)
 {
     _children.Remove(child);
     child._parents.Remove(this);
     child.PathCountRecalulate();
 }
        private static IEnumerable <TreeElement <T> > GetElementsDownWithDuplicates <T>(TreeElement <T> element)
        {
            foreach (TreeElement <T> child in element.Children)
            {
                yield return(child);

                if (child.HasChildren)
                {
                    foreach (TreeElement <T> grandchild in GetElementsDownWithDuplicates(child))
                    {
                        yield return(grandchild);
                    }
                }
            }
        }
        internal static IEnumerable <TreeElement <T> > GetElementsDown <T>(TreeElement <T> element)
        {
            var elementsWeFound = new HashSet <TreeElement <T> >();

            return(GetElementsDown(element, elementsWeFound));
        }
 /// <summary>
 /// Удаляет все ветки, которые расположены после данного элемента
 /// </summary>
 /// <param name="startElement"></param>
 public void RemoveBranchesAfter(TreeElement <T> startElement)
 {
     startElement.RemoveAllParents();
     RemoveDown(startElement);
     RecalculateBrachCount();
 }
 public TreeDecision()
 {
     Root         = new TreeElement <T>();
     _elements    = new HashSet <TreeElement <T> >();
     _branchCount = 1;
 }