Beispiel #1
0
        private void RemoveUp(TreeElement <T> element)
        {
            if (element == Root)
            {
                return;
            }

            if (_elements.Contains(element))
            {
                throw new Exception("Нет такого элемента");
            }


            foreach (var parent in element.Parents)
            {
                element.RemoveParent(parent);

                if (!parent.HasChildren)
                {
                    RemoveBranchWithLeaf(parent);
                }
            }

            _elements.Remove(element);
        }
Beispiel #2
0
        /// <summary>
        /// Удаляет все ветки, к которым пренадлежит данный элемент
        /// </summary>
        /// <param name="element"></param>
        public void RemoveBranchesWith(TreeElement <T> element)
        {
            if (!_elements.Contains(element))
            {
                throw new Exception("Нет такого элемента");
            }


            foreach (var parent in element.Parents)
            {
                element.RemoveParent(parent);

                if (!parent.HasChildren)
                {
                    RemoveUp(parent);
                }
            }


            if (element.HasChildren)
            {
                foreach (var child in element.Children)
                {
                    element.RemoveChild(child);

                    if (!child.HasParents)
                    {
                        RemoveDown(child);
                    }
                }
            }

            _elements.Remove(element);
            RecalculateBrachCount();
        }