|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.10.2018, 23:47 | #1 |
Регистрация: 12.09.2018
Сообщений: 4
|
Сбалансированное бинарное дерево
Здравствуйте, стоит задача вывести на печать значения узлов бинарного дерева. Дана глубина дерева (n), соответственно размер массива известен (length = ((2^n) -1). В самом массиве дубликатов не будет. Вывести надо в виде:
Node (Node (Child 8) 10 (Child 12)) 15 (Child (Child 16) 20 (Child 25)) если массив в отсортированном виде (8, 10, 12, 15, 16, 25); То есть мне надо написать рекурсивную функцию вроде: void printTree(int a[], int start, int end){ if(start>end){ return; } int mid = (start+(end-start))/2; printTree(a, start, mid) } Но я понятия не имею как выводить скобки и Node, Child в нужном порядке, так как по сути я иду от середины. Подскажите, пожалуйста. |
19.10.2018, 09:10 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
любой узел имеет ДВА поддерева
сначала выводим левое поддерево //printTree(a, start, mid) а потом и правое //printTree(a, mid, end) т.е. в функции должно быть ДВА "своих" вызова (по числу поддеревьев) и конечно же с разными параметрами
программа — запись алгоритма на языке понятном транслятору
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сбалансированное дерево с++ | timedo | Общие вопросы C/C++ | 0 | 20.10.2012 13:53 |
Идеально-сбалансированное дерево | trum | Помощь студентам | 1 | 28.05.2012 21:37 |
Сбалансированное дерево C# | alenachitnaeva | Помощь студентам | 0 | 23.05.2012 21:37 |
сбалансированное дерево | prostac | Помощь студентам | 0 | 21.09.2010 16:29 |
Идеально сбалансированное дерево | Осипович | Общие вопросы Delphi | 0 | 16.05.2009 15:54 |