我正在尝试使用递归方法在二叉树上编写预序遍历算法。这是我拥有的:
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 的符号。
最佳答案
当编译器说找不到符号时,这意味着您尝试引用的字段不存在。
查看你的类BT
,这是正确的; BT
没有left
或right
,它有L
和R
。因此,替换
traverse(t.left);
traverse(t.right);
与
traverse(t.L);
traverse(t.R);
将解决此问题。
关于java - 如何在 Java 中进行预订遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843292/