使用泛型实现树和广度搜索

时间:2013-12-11 22:06:41

标签: java generics breadth-first-search

我根本没有太多关于泛型的经验,我正试图摆脱使用它们。得到这个与整数工作后我试图让它使用泛型工作,但我不断收到以下错误

必需:genericTree    发现:int    原因:实际参数int不能通过方法调用转换转换为genericTree    其中T是一个类型变量:     T扩展了类genericTree中声明的Object     genericTree.java:83:error:方法add in class genericTree不能应用于给定的类型;

我得到它告诉我的东西,但我不知道如何解决它。我一直在尝试不同的方法,但似乎没有什么对我有用。

继承我的完整代码:

import java.util.*;

class genericTree<T>{

    private Node root;
    public List <genericTree<T>> list;

    private class Node
    {
    Node left;
    Node right;
    T data;

            Node(T newData)
            {
                    left = null;
                    right = null;
                    data = newData;
            }
    }

    genericTree()
    {
            root = null;
    }

    public boolean breadthSearch(genericTree<T> searchValue)
    {
    Queue<Node> queue = new LinkedList<Node>() ;
            if (this.root == null)
                   return false;
    queue.clear();
    queue.add(root);
 while(!queue.isEmpty())
    {
        Node node = queue.remove();
            System.out.print(node.data + " ");

                    if(node.data == searchValue)
                            return true;
                    if(node.left != null)
                            queue.add(node.left);
                    if(node.right != null)
                            queue.add(node.right);
    }
     return false;
    }


    public void add(genericTree<T> data)
    {
      list.add(data);
    }

    public void display()
    {
            display(root);
    }

    private void display(Node node)
    {
            if(node==null)
                    return;
            display(node.left);
            System.out.println(node.data + " ");
            display(node.right);
    }
    public static void main(String[] args)
    {       

    genericTree bst = new genericTree();
    bst.add(10);
    bst.add(5);
    bst.add(6);             
    bst.add(13);
    bst.add(15);
    bst.add(8);
    bst.add(14);
    bst.add(7);
    bst.add(12);
    bst.add(4);
    bst.breadthSearch(6);
    }
}    

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

IT看起来像你想要的那样

public boolean breadthSearch(genericTree<T> searchValue)

是这个

public boolean breadthSearch(T searchValue)

您可能还想确保genericTree<T>genericTree<int>

genericTree<int> bst = new genericTree<int>();