首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为单独的类文件编写方法

为单独的类文件编写方法
EN

Stack Overflow用户
提问于 2016-02-21 02:17:37
回答 1查看 28关注 0票数 0

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

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

错误:不兼容类型: TreeNode不能转换为UBT

代码语言:javascript
复制
//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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-21 02:24:20

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

代码语言:javascript
复制
  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并使用TreeNode版本的inOrder对其进行递归处理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35531533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档