java - 为单独的类文件编写方法

标签 java binary-search-tree

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

我尝试使用像这样的递归编写 inOrder 遍历方法,但它给了我如下错误,尽管我将其指定为 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 版本对其进行递归。

关于java - 为单独的类文件编写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35531533/

相关文章:

c++ - 指针返回编译错误

java - 在不同类android中访问变量的最佳方法

C++ 二叉搜索树创建段错误

java - 谷歌翻译API 403在Java中被禁止

javascript - 与 java 相比, Node 中的 AES 加密输出不同

c - 我是否设法正确估计了 O(n)?

java - 通过使用这种 BST 插入方法,我只有 root 作为输出,为什么?

c - 具有多个子节点和两个指向左右的节点的二叉搜索树

java - 如何使用 jackson 以不同方式序列化同一实体的相同属性

java - PHP/Java 套接字 - 奇怪的错误?