如何从另一个类引用泛型类

我正在制作一个程序,该程序能够按升序或降序对整数或分数列表进行排序。我正在使用 GUI,当我按下按钮时,原始列表应该添加到二叉树中。应该执行中序遍历并且该列表应该显示在 GUI 中。我已经完成了所有工作,但后来我注意到我应该使搜索树类通用。我已将类更改为泛型,但在从 GUI 调用它以实际执行遍历时遇到问题。您可以提供的任何帮助将不胜感激。


这是带有 Node 类的原始 SearchTree


public class SearchTree {



// creates the root of the tree

Node root;


// String to store the answer while tree is being traversed

private String answer = "";


SearchTree (Object x) {


    root = new Node(x);

}


/* recursive method adding integers to the tree,

 * placing it depending on if it is smaller or larger

 * than the parent node

 */ 

Node insertInteger(Node node, Integer x) {

    if (node == null) {

        return node = new Node(x);

    }

    if (x < (Integer) node.parent) {

        node.left = insertInteger(node.left, x);

    } else {

        node.right = insertInteger(node.right, x);

    }

    return node;

}


// recursive method for adding fractions to the tree

Node insertFraction(Node node, Fraction x) {

    if (node == null) {

        return node = new Node(x);

    }

    if (x.compareTo((Fraction) node.parent) < 1) {

        node.left = insertFraction(node.left, x);

    }else {

        node.right = insertFraction(node.right, x);

    }

    return node;

}


// in order traversal for the ascending order

String inOrder(Node node) {

    if (node != null) {

        inOrder(node.left);

        answer = answer + node.parent + " ";

        inOrder(node.right);

    }

    return answer;

}


// reversed traversal for the descending order

String descendingOrder(Node node) {

    if (node != null) {

        descendingOrder(node.right);

        answer = answer + node.parent + " ";

        descendingOrder(node.left);

    }

    return answer;

 }

}


class Node {


 Object parent;

 Node left;

 Node right;


 // Constructors

 Node(Object theParent) {

    this(theParent, null, null);

 }


 private Node(Object theParent, Node lChild, Node rChild) {

    parent = theParent;

    this.left = lChild;

    this.right = rChild;

 }

}



12345678_0001
浏览 170回答 1
1回答

哔哔one

您正在使用占位符类型正确声明您的类T。当您实例化类时,您使用的是占位符,而不是您希望泛型类成为的类型。SearchTree<Integer>&nbsp;st&nbsp;=&nbsp;new&nbsp;SearchTree<Integer>();泛型类需要使用具体类型进行实例化,以使所有类型检查正常工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java