Я пытаюсь написать алгоритм обхода предзаказов на двоичном дереве с использованием рекурсивного метода. Вот что у меня есть:Как выполнить предварительный обход в Java?
void traverse(BT t) {
if (t == null){
return;
}
System.out.print(t);
traverse(t.left);
traverse(t.right);
}
Это не компилируется по некоторым причинам. Я думаю, что проблема связана с остальной частью моего кода. Вот весь код:
class ZOrep extends TreeAndRepresentation {
private int k;
ZOrep left;
ZOrep right;
ZOrep(int m, int[] b) { // given sequence build tree
super(m, b);
N = (M-1)/2;
k = -1;
t = build();
}
ZOrep(int n, BT t) { // given tree build sequence
super(n, t);
t = build();
traverse(t);
}
BT build() {
return(a[++k] == 0 ? null : new BT(build(), build()));
}
void traverse(BT t) {
if (t == null){
return;
}
System.out.print(t);
traverse(t.left);
traverse(t.right);
}
}
Я чувствую, что я что-то отсутствует, когда я строю дерево (с моим методом ZOrep). Также есть класс BT:
class BT {
BT L; BT R;
BT(BT l, BT r) { L = l; R = r; }
}
В настоящее время мой компилятор говорит, что он не может найти символ для t.left и t.right.