Я пытаюсь выполнить задание, но у меня проблемы с первым шагом.Ссылка ниже является назначением для контекста:
https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1DkmkmuB-leNDVmMDU0MDgtYmQzNC00OTdkLTgxMDEtZTkxZWQyYjM4OTI1&hl=en
Пример ввода:
a0
0
a00
ab000
, который дает вывод:
Дерево 1:
Недопустимо!
Дерево 2:
Высота: -1
путьдлина: 0
завершено: да
почтовый заказ:
дерево 3:
высота: 0
длина пути: 0
завершено: да
почтовый заказ: a
дерево 4:
высота: 1
длина пути: 1
завершено: да
заказ: ба
Я не могу выполнить задание, потому что застрял на самом деле зданиядвоичное дерево из ввода.Код, который мне удалось найти, приведен ниже:
public class btsmall {
int k = 0;
char[] cArray;
public static void main(String[] args) throws IOException {
new btsmall().run();
}
static class Node {
Node left;
Node right;
char value;
public Node(char value) {
this.value = value;
}
}
public void run() throws IOException {
String preorder;
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
while ((preorder = reader.readLine()) != null) {
cArray = preorder.toCharArray();
Node tree = null;
insert(tree);
preorder(tree);
k = 0;
}
}
public void insert(Node node) {
if (cArray[k] == (char) 0) {
node = new Node((char) 0);
node.left = node.right = null;
k++;
} else {
node = new Node(cArray[k]);
k++;
insert(node.left);
insert(node.right);
}
}
public void preorder(Node node) {
if (node != null) {
System.out.println(node.value + " ");
preorder(node.left);
preorder(node.right);
}
}
}
Я пытаюсь проверить, правильно ли я строю двоичное дерево с помощью метода предварительного заказа, но всякий раз, когда я запускаю программу, онкажется застрял где-то в бесконечном цикле.Может кто-нибудь помочь указать, что является причиной этого?И я действительно на правильном пути с этим?У кого-нибудь есть какие-нибудь подсказки о том, как мне следует строить это конкретное двоичное дерево?
Спасибо.