|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.04.2016, 23:25 | #1 |
Новичок
Джуниор
Регистрация: 10.04.2016
Сообщений: 2
|
Бинарное дерево (Java)
Здравствуйте,
помогите пожалуйста реализовать алгоритм формирования бинарного дерева из массива. Правило формирования следующие, корнем дерева является элемент стоящий посередине массива. Если количество элементов четное, то берется элемент следующий после середины массива. К примеру у массива [1,2,3,4,5] корнем будет 3, у массива [1,2,3,4] корнем так же будет 3. после того как мы нашли корень, наш массив получается делится на два "подмассива", корни соответствующих поддеревьев ищутся аналогично корню искомого дерева. Элементы которые стоят в массиве слева, в дереве так же располагаются слева, аналогично с элементами стоящими справа от корня. Пример дерева Значения элементов массива на построение дерева никак не влияет, имеет значение только позиция элемента, поэтому в примерах для простоты значения элементов совпадают с их позицией Необходимо описать дерево в виде массива узлов, где у каждого узла указывается его значение и ссылки на левый и правый потомок Спасибо. |
11.04.2016, 07:49 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
А что не получается? Все ж описано...
|
11.04.2016, 10:52 | #3 |
Новичок
Джуниор
Регистрация: 10.04.2016
Сообщений: 2
|
не получается придумать как этот алгоритм "технически реализовать".
Пока схема в голове примерно такая. Пишем функцию getmiddle которая будет возвращать индекс узла, на вход функции подается массив. далее необходимо придумать цикл в котором сначала находим первый узел. Потом разбиваем массив на 2 подмассива и находим их центры. В итоге у нас узел и его правый и левый потомок. Вопрос, какое придумать условие цикла? Как разбивать массив на подмассивы? через промежуточные переменные? и т.д. П.С. Сорри за возможно глупые вопросы, но в программировании я совсем новичок |
11.04.2016, 11:21 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
Есть "магическое слово" рекурсия... Например, берете ноде функция(массив). В ней вы привязываете потомков и возвращаете узел для середины.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарное дерево | Амэ | Общие вопросы C/C++ | 0 | 08.06.2015 18:15 |
Бинарное дерево | Alexsandr | Visual C++ | 0 | 05.06.2012 18:30 |
Бинарное дерево! | pawel32 | Помощь студентам | 3 | 14.11.2011 22:40 |
Бинарное дерево | Viktor19764 | Помощь студентам | 1 | 05.11.2011 23:21 |
Бинарное дерево | g0liath | Помощь студентам | 2 | 16.02.2008 23:54 |