Реализация двоичного дерева без использования готовых методов - 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); } } } //////////////////////////////// }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д