Esempio n. 1
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();
        }
Esempio n. 2
0
        private void RemoveDown(TreeElement <T> element)
        {
            if (!_elements.Contains(element))
            {
                throw new Exception("Нет такого элемента");
            }

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

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

            _elements.Remove(element);
        }