我有一个名为.class的UBT.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发布于 2016-02-21 02:24:20
看起来您希望将其拆分,因此您的主要递归是在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并使用TreeNode版本的inOrder对其进行递归处理。
https://stackoverflow.com/questions/35531533
复制相似问题