Я видел много вопросов (How to print binary tree diagram?) о том, как распечатать дерево по уровню, и все они, кажется, используют узлы, но в основном они определяют каждый узел и дайте ему конкретные указатели вручную ... Я ищу способ сделать то же самое, распечатать дерево по уровню, но вам дано TreeSet типа Integer (например, {3,12,28,40,41,58,83}
), и вы не знаете что будет в нем до времени исполнения.Распечатайте любой бинарный TreeSet по уровню -Java
Для простоты, результат будет выглядеть примерно так:
40
12 58
3 28 41 83
С или без использования узлов в порядке, но мне было бы интересно увидеть версию без них.
EDIT:
Чтобы уточнить, я говорю о java.util.TreeSet
.
Так что я работал над этим, так как я отправил это, и я придумал метод, который я называю getRoot
, который принимает TreeSet<Integer>
в качестве параметра и возвращает Integer
, который середина дерева. Например, если вы вызвали его в дереве примеров, он вернет 40
.
Итак, теперь я думаю, что, вероятно, есть способ рекурсивно сделать то, о чем я говорю, позвонив getRoot
на подребрах, например. tailSet
и headSet
дерева, если это имеет смысл. Однако у меня возникли проблемы с тем, чтобы он следовал через каждую ветвь дерева. Мой код до сих пор:
public TreeSet<Integer> recursivePlease(TreeSet<Integer> t){
if (t.size()<=1){ //base case
System.out.println(t.first());
return t;
}else{
System.out.println(getRoot(t));
return recursivePlease((TreeSet<Integer>) t.headSet(getRoot(t)));
}
}
и это ... работает. Но он просто печатает левую часть дерева. Любая помощь в создании этого метода печатает все дерево или другие идеи целиком.
Внутренняя структура TreeSet представляет собой деталь реализации. AFAIK, спецификация определяет временные затраты/сложность и порядок в TreeSet, но различные реализации могут использовать различные древовидные структуры для достижения этого. Не могли бы вы указать, какое дерево вы ожидаете в качестве ответа? –
Вы говорите 'java.util.TreeSet' или свою собственную реализацию набора деревьев? В последнем случае, как оно выглядит? –
Выполнение этого без экземпляров-экземпляров вызывающего объекта, разве это не вопрос инкапсуляции создания дерева? –