2016-02-21 3 views
0

У меня есть .class файл с именем UBT.class (который у меня нет доступа к исходному коду). Мне нужно получить данные из файла UBT.class. У меня есть доступ к таким методам, как .getRoot() & .getLeft() & .getRight() из класса UBT (не используя методы из класса TreeNode).написать метод для отдельного файла класса

Я пытался писать метод обхода заказовМои с помощью рекурсии, как это, но его дает мне ошибки, как показано ниже, хотя я specifiy его быть УБТ не TreeNode

Ошибка: несовместимые типы: TreeNode не могут быть преобразованы в УБТ

//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 

ответ

1

Похоже, вы хотите разбить его, чтобы ваша главная рекурсия была на 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()); 
    } 
    } 

Используя это, вы бы назвали заказовМои с УБТ, то это было бы захватить корневой TreeNode и сделать рекурсию на том, что с версией TreeNode из заказовМои.

+2

Ваше решение близко, но с небольшой погрешностью. Будет редактировать его для вас =) –

Смежные вопросы