Итак, для получаемого нами задания мы должны создать двоичное дерево поиска в одном из наших классов, представляющем код Морзе 1 (этот https://en.wikipedia.org/wiki/Morse_code#/media/File:Morse_code_tree3.png) в методе private void buildTree(). Чтобы помочь нам, он дал нам массив, заполненный всеми персонажами, которые я покажу через секунду. В методе мы должны создать дерево через ссылку на уже объявленный узел topMostNode. Массив значений полукокса здесьСоздание двоичного дерева поиска для кода Морзе
private static final char treeChars[] =
{ 'E', 'I', 'S', 'H', '5', '4', 'V', '3', 'U', 'F', UNUSED_CHAR, '2', 'A',
'R', 'L', 'W', 'P', 'J', '1',
'T', 'N', 'D', 'B', '6', 'X', 'K',
'C', 'Y', 'M', 'G', 'Z', '7', 'Q', 'O', UNUSED_CHAR, '8', UNUSED_CHAR, '9', '0'
};
Он говорит, что существует определенная последовательность, мы должны использовать, чтобы поместить этот массив в формате ранее изображения в нашем дереве, но я смотрел на него для последние несколько часов и честно не могут понять, что это такое. Это кажется невозможным, потому что массив просто пропускает непечатаемые символы, которые не нужны в дереве, если они не нужны, чтобы указывать на другие допустимые символы, и эти недопустимые символы в случайном порядке помещаются внизу дерева, поэтому нет шаблона для зная, когда просто не указывать на часть dit или dah узла. Как мне это сделать? На данный момент я честно считал, что это просто хардкодирование. Благодаря!
Да, я хочу разместить массив, который он предоставил, в дерево, на которое можно ссылаться только с одного узла, у которого есть «topMostNode», и дерево должно выглядеть так: https://en.wikipedia.org/wiki /Morse_code#/media/File:Morse_code_tree3.png –
Проблема с вашим решением заключается в том, что некоторые узлы в середине дерева указывают только на одно или два значения, потому что некоторые из самых нижних узлов являются недопустимыми символами, которые он не хочет в дереве, таким образом, не находятся в массиве. Другая проблема заключается в том, что массив не организован для того, чтобы сделать метод 2 * node/+ 1. По крайней мере, я думаю, может быть, вы правы, и я просто не вижу этого. –
Я вижу, что вы говорите, из предоставленного массива, это не полное дерево, поэтому использование первого прохода по глубине не гарантирует, что вы знать, где узлы останавливаются. Существуют ли какие-либо другие спецификации для назначения, которые могут помочь выяснить, где должен заканчиваться узел? – Sacert