Реализация двоичного дерева без использования готовых методов - C#

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

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

Есть ли примеры кода, как реализовать двоичное дерево без использования готовых методов.

Решение задачи: «Реализация двоичного дерева без использования готовых методов»

textual
Листинг программы
class Data
        {
            public int k;
            public string v;
 
            public Data(int nk, string nv)
            {
                k = nk;
                v = nv;
            }
 
        }
 
        class Tree
        {
            public List<int> lst = new List<int>();
            Data data;
            Tree left;
            Tree right;
 
            public Tree(Data nd, Tree nl, Tree nr)
            {
                data = nd;
                left = nl;
                right = nr;
            }
 
            public void Insert(Data ndata)
            {
                if (this.data == null)
                {
                    // MessageBox.Show("V " + ndata.k.ToString());
                    this.data = ndata;
                }
                else
                {
                    if (ndata.k < this.data.k)
                    {
                        if (left == null)
                        {
                            //MessageBox.Show("Пишу лево " + ndata.k.ToString());
                            this.left = new Tree(ndata, null, null);
                        }
                        else
                        {
                            //MessageBox.Show("Перехожу лево " + ndata.k.ToString());
                            left.Insert(ndata);
                        }
                    }
                    else if (ndata.k >= this.data.k)
                    {
                        if (right == null)
                        {
                            // MessageBox.Show("Пишу право " + ndata.k.ToString());
                            this.right = new Tree(ndata, null, null);
                        }
                        else
                        {
                            //MessageBox.Show("Перехожу  право " + ndata.k.ToString());
                            right.Insert(ndata);
                        }
                    }
                    else
                        throw new Exception("Узел уже существует");//no fuckin' way!
                }
            }
 
            public void traverse(Tree visitor)
            {
                if (left != null)
                {
                    left.traverse(left);
                }
 
                MessageBox.Show(this.data.k.ToString());
                //данные this.data.k.ToString() надо добавить в листбокс в форме
 
                if (right != null)
                {
                    right.traverse(right);
                }
 
            }
        }
        ////////////////////////////////
}

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


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

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

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