为单独的 class 文件编写方法

writing a method for a seperate class file

我有一个名为 UBT.class 的 .class 文件(我无权访问源代码)。我需要从 UBT.class 文件中检索数据。我可以访问 UBT class 中的 .getRoot() & .getLeft() & .getRight() 等方法(不使用 TreeNode class 中的方法)。

我尝试使用这样的递归编写一个中序遍历方法,但它给了我如下错误,尽管我指定它是 UBT 而不是 TreeNode

错误:类型不兼容:无法将 TreeNode 转换为 UBT

//From main method

     public static void inOrder(UBT root)
      {
        if(root.getRoot() != null)
        {
          inOrder(root.getRoot().getLeft());
          System.out.println(root.getRoot().getData() + " ");
          inOrder(root.getRoot().getRight());
        }
      }

class TreeNode
{
  private int data;
  private TreeNode left, right;

  public TreeNode(int data) {
    this.data = data;
    this.left = null;
    this.right = null;
  }

  public int getData() {
    return data;
  }

  public void setData(int newData){
    this.data = newData;
  }

  public TreeNode getLeft() {
    return left;
  }

  public TreeNode getRight() {
    return right;
  }

  public void setLeft(TreeNode left) {
    this.left = left;
  }

  public void setRight(TreeNode right) {
    this.right = right;
  }
}

class BST // Typical BST implementation

看来您想将其拆分,因此您的主要递归是在 TreeNodes 上,而不是 UBT 对象上。

  public static void inOrder(TreeNode node) {
    if(node != null)
    {
      inOrder(node.getLeft());
      System.out.println(node.getData() + " ");
      inOrder(node.getRight());
    }
  }

  public static void inOrder(UBT root) {
    if (root.getRoot() != null) {
      inOrder(root.getRoot());
    }
  }

使用它,您将使用 UBT 调用 inOrder,然后它会获取根 TreeNode 并使用 inOrder 的 TreeNode 版本对其进行递归。