Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java将树添加到ArrayList_Java_Arraylist_Tree - Fatal编程技术网

Java将树添加到ArrayList

Java将树添加到ArrayList,java,arraylist,tree,Java,Arraylist,Tree,我试图按顺序将二叉搜索树的每个节点添加到ArrayList中,我目前有以下代码 private ArrayList<String> toArray(TreeNode<Comparable> root) { ArrayList<String> array = new ArrayList<String>(); if(root!= null) return null; inorder(root.getLef

我试图按顺序将二叉搜索树的每个节点添加到ArrayList中,我目前有以下代码

private ArrayList<String> toArray(TreeNode<Comparable> root)
  {    
    ArrayList<String> array = new ArrayList<String>();
    if(root!= null)
      return null;
    inorder(root.getLeft());
    array.add(root.getValue());
    inorder(root.getRight());
    return array;
  }
private ArrayList toArray(TreeNode root)
{    
ArrayList数组=新的ArrayList();
if(root!=null)
返回null;
顺序(root.getLeft());
add(root.getValue());
顺序(root.getRight());
返回数组;
}
但是我从运行它时得到这个错误

Error: BSTree.java:64: cannot find symbol
symbol  : method add(java.lang.Comparable)
location: class java.util.ArrayList<java.lang.String>
错误:BSTree.java:64:找不到符号
符号:方法添加(java.lang.Compariable)
位置:类java.util.ArrayList

谢谢您的帮助。

以下通用方法对您有效吗?我不使用编译器,但解决方案应该是这样的:

  private <T extends Comparable<T>> ArrayList<T> toArray(TreeNode<T> root)
  {    
    if(null == root)
      return null;

    ArrayList<T> array = new ArrayList<T>();
    inorder(root.getLeft());
    array.add(root.getValue());
    inorder(root.getRight());
    return array;
  }
private ArrayList toArray(TreeNode root)
{    
if(null==根)
返回null;
ArrayList数组=新的ArrayList();
顺序(root.getLeft());
add(root.getValue());
顺序(root.getRight());
返回数组;
}
此树节点似乎与此网页中的类相似:

我用过这样的东西

private void inorder(Node u){
            if( tree.isLeaf(u) ){
                arrayList.add(u);
            }else{
                Node v = tree.getLeft(u);
                invorder(v);

                arrayList.add(u);

                v = tree.getRight(v);
                invorder(v);
}

你的TreeNode类是什么样子的?这个方法需要一个由Comparable:s组成的树-有很多Comparable:s不是字符串。只有字符串才能放入ArrayList。看到了吗?如何将可比较项添加到ArrayList->ArrayList