Я пытаюсь создать двоичное дерево поиска, но код, похоже, не работает. Конструкторы и переменные моего BinaryNode
private BinaryNode left;
private BinaryNode right;
public BinaryNode() {
val = null;
left = null;
right = null;
}
public BinaryNode(String a, BinaryNode b, BinaryNode c) {
val = a;
left = b;
right = c;
}
Вот мой метод add и printPostOrder. BinaryNode x - это root, для которого узел со значением y будет дочерним.
public BinaryNode add(BinaryNode x, String y) {
if(x==null) {
x = new BinaryNode(y,null,null);
return x;
}
if(y.compareTo(x.getVal())<0) {
BinaryNode temp = x.getLeft();
temp = add(x.getLeft(),y);
x.setLeft(x);
}
else if(y.compareTo(x.getVal())>0){
BinaryNode temp = x.getRight();
temp = add(x.getRight(),y);
x.setLeft(x);
}
return x;
}
public void printPostOrder(BinaryNode x) {
if(x!=null) {
System.out.print(x.getVal()+" ");
printPostOrder(x.getRight());
printPostOrder(x.getLeft());
}
}
Сообщение об ошибке -
at sun.nio.cs.SingleByte.access$000(Unknown Source)
at sun.nio.cs.SingleByte$Encoder.encodeArrayLoop(Unknown Source)
at sun.nio.cs.SingleByte$Encoder.encodeLoop(Unknown Source)
at java.nio.charset.CharsetEncoder.encode(Unknown Source)
at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
at sun.nio.cs.StreamEncoder.write(Unknown Source)
at java.io.OutputStreamWriter.write(Unknown Source)
at java.io.BufferedWriter.flushBuffer(Unknown Source)
at java.io.PrintStream.write(Unknown Source)
at java.io.PrintStream.print(Unknown Source)
at BinarySearchTree.printPostOrder(BinarySearchTree.java:95)
at BinarySearchTree.printPostOrder(BinarySearchTree.java:97)
, где последняя строка повторяется несколько раз раз. Помощь будет оценена.