#c_sharp #бинарное_дерево
Преподаватель задал реализовать визуализацию дерева, однако мою визуализацию он таки не принял. Вопрос: Что не так с этим деревом? using System; using System.Collections; using System.Linq; using System.Text; namespace tree { class Program { static void Main(string[] args) { char[] arrayS; int n, m; Console.WriteLine("Введите строку"); arrayS = Console.ReadLine().ToArray(); arrayS = SortArray(arrayS); n = getN(arrayS.Length); m = (int)Math.Pow(2, n - 1) * 2 + 1; char[,] tree = new char[n, m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { tree[i, j] = ' '; } } tree[0, m / 2] = arrayS[0]; int position = 1; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < m; j++) { if (tree[i, j] != ' ' && tree[i, j] != '_') { if (position < arrayS.Length) { tree[i + 1, j - (int)Math.Pow(2, n - 2 - i)] = arrayS[position++]; for (int k = j - (int)Math.Pow(2, n - 2 - i); k < j; k++) tree[i, k] = '_'; } if(positionarr[j]) { min = arr[j]; arr[j] = arr[i]; arr[i] = min; } } } char[] array = new char[arr.Length]; int position = arr.Length / 2-1; for (int i = 1; i < arr.Length; i+=2, position--) { array[i] = arr[position]; } position = arr.Length / 2; for (int i = 0; i < arr.Length; i+=2, position++) { array[i] = arr[position]; } return array; } } }
Ответы
Ответ 1
У вас как в левом так и в правом поддереве есть значения, как больше так и меньше N. Дерево предполагает, что с одной стороны на любую глубину все значения меньше чем на вершине, а справа больше.Ответ 2
public static int Print(Node node, int x, int y) { Console.SetCursorPosition(x, y); Console.Write(node.Value); var loc = y; if (node.Right != null) { Console.SetCursorPosition(x + 2, y); Console.Write("--"); y = Print(node.Right, x + 4, y); } if (node.Left != null) { while (loc <= y) { Console.SetCursorPosition(x, loc + 1); Console.Write(" |"); loc++; } y = Print(node.Left, x, y + 2); } return y; }
Визуализация бинарного дерева на сайтах:
ОтветитьУдалитьhttp://btv.melezinek.cz/binary-search-tree.html
https://soft.softodrom.ru/ap/Trees-Portable-p19987