Алгоритм удаления узлов из дерева - C#

Узнай цену своей работы

Формулировка задачи:

В общем, нужна программа для работы с деревом Подскажите как сделать удаление узлов Например при удалении - "1" автоматически удаляются элементы "12, 121 и 122" Как лучше организовать класс для работы с фигурами? В общем жду ваших подсказок

Решение задачи: «Алгоритм удаления узлов из дерева»

textual
Листинг программы
        public decimal ScaleCoefficient
        {
            get { return scaleCoefficient; }
            set
            {
                foreach(Node fst in AllNodes()) { 
                    fst.between = (int)(Math.Round(NormalBetween * value));
                    fst.scaledHorizontalDistance = (int)(Math.Round(fst.normalHorizontalDistance * value));
                    fst.scaledverticalDistance = (int)(Math.Round(fst.normalVerticalDistance * value));
                    int newwidth = (int)(Math.Round(NormalSize.Width * value)), newheigth = (int)(Math.Round(NormalSize.Height * value));
                    if (fst.Parent != null)
                    {
                        var p2 = new Point(fst.Parent.Rect.Left + fst.Parent.Rect.Width / 2, fst.Parent.Rect.Bottom);
                        var p1 = new Point(p2.X, p2.Y + fst.Parent.scaledverticalDistance);
                        switch (fst.Parent.ChildrenOrientation)
                        {
                            case ChildrenOrientation.Horizontal:
                                {
                                    int index = fst.Parent.Children.IndexOf(fst);
                                    int indplpos = index - fst.Parent.Children.Count / 2 + fst.Parent.correction;
                                    Point p3 = new Point(p1.X + (newwidth * (indplpos)) + fst.Parent.scaledHorizontalDistance * indplpos, p1.Y);
                                    var p4 = new Point(p3.X, p3.Y + fst.between);
                                    fst.Rect = new Rectangle(p4.X - newwidth / 2, p4.Y, newwidth,newheigth);
                                }
                                break;
                            case ChildrenOrientation.Vertical:
                                {
                                    Point p3 = new Point(p1.X - newwidth / 2 - fst.between, p1.Y);
                                    Point p4 = new Point(p3.X, p3.Y + newheigth / 2 + fst.between * (fst.Parent.Children.IndexOf(fst) + 1) + newheigth * fst.Parent.Children.IndexOf(fst));
                                    Point p5 = new Point(p3.X + fst.between, p4.Y);
                                    fst.Rect = new Rectangle(p3.X + fst.between, p4.Y - fst.Rect.Height / 2, newwidth, newheigth);
                                }
                                break;
                        }
                    }
                    else
                    {
                        fst.Rect = new Rectangle(fst.Rect.Left,fst.Rect.Top, newwidth,newheigth);
                    }
                    fst.scaleCoefficient = value;
                }
                scaleCoefficient = value;
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы