java - 如何在 Java 中进行预订遍历?

标签 java algorithm compiler-errors binary-tree traversal

我正在尝试使用递归方法在二叉树上编写预序遍历算法。这是我拥有的:

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 没有leftright,它有LR。因此,替换

traverse(t.left);
traverse(t.right);

traverse(t.L);
traverse(t.R);

将解决此问题。

关于java - 如何在 Java 中进行预订遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34843292/

相关文章:

algorithm - 两点之间的最佳(最快)轨迹

database - 有没有办法让数据库查询以 O(1) 的速度执行

eclipse - Eclipse AJDT-Java方面类上的错误消息 “This method must return a result of type int”

java - 在 Java 中将 JSON 字符串转换为文件

java - 外部硬件指纹扫描仪和安卓设备集成

algorithm - 快速排序的平均情况

function - Verilog 函数 - 无法找出我的错误

compiler-errors - 将 OsString 传递给 func<T : ToString>, 的误导性错误 Display 特征从何而来?

Java 8 对对象列表进行排序

java - 删除 ArrayList<ArrayList<String>> 中的重复行