gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:22:02 25 4
gpt4 key购买 nike

我有一个名为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com