Я зациклился на логике о том, как сгенерировать дерево при вводе строкового ввода. Такие, как, когда я есть ввод следующего вида -Построение дерева из ввода строки
(1 (2 (3) (4)) (5 (6)())
Представление дерева будет как так -
1
/\
2 5
/\ /\
3 4 6()
Я могу построить дерево из обычного типа tree.add (data), а затем искать новый узел, который будет добавлен сам, если судить о том, что он больше или меньше родительского узла. Но я не могу понять, как реализовать, как хранить выше указанной строки упоминания в форме двоичной структуры данных.
Вот что я пробовал o far -
public class BinaryTree {
static Node root;
public static void levelorder(Node<?> n) {
Queue<Node<?>> nodequeue = new LinkedList<Node<?>>();
if (n != null)
nodequeue.add(n);
while (!nodequeue.isEmpty()) {
Node<?> next = nodequeue.remove();
System.out.print(next.data + " ");
if (next.getLeft() != null) {
nodequeue.add(next.getLeft());
}
if (next.getRight() != null) {
nodequeue.add(next.getRight());
}
}
}
private static String[] breakString(String elements) {
int indexOfOpenBracket = elements.indexOf("(");
int indexOfLastBracket = elements.lastIndexOf(")");
String removedPString = elements.substring(indexOfOpenBracket + 1,
indexOfLastBracket);
String[] breakRemovedPString = removedPString.split(" ");
if (breakRemovedPString[1].contains("(")) {
add(breakRemovedPString[0], breakRemovedPString[1], breakRemovedPString[2]);
}
return breakRemovedPString;
}
static void add(String parent, String leftString, String rightString) {
Node<String> nodeToAdd = new Node<String>(parent);
if (root == null) {
root = nodeToAdd;
root.left = new Node<String>(leftString);
root.right = new Node<String>(rightString);
} else {
}
}
public static void main(final String[] args) {
String treeString = "(1 (2) (3))";
breakString(treeString);
levelorder(root);
System.out.println();
}
}
Пожалуйста, предложите некоторые варианты реализации этой проблемы.
Вы должны использовать дополнительную структуру данных для анализа и оценки вашей 'String' как стека. –
Использование структуры данных очереди см .: http://en.wikipedia.org/wiki/Queue_(abstract_data_type) –
@OzanDeniz Мне интересно, как использовать очередь в таком случае. Я только решил эти упражнения, используя стеки. Разум, чтобы дать ответ, так что я тоже могу узнать? Примечание: этот комментарий не предназначен для троллинга. –