Java将树添加到ArrayList
我试图按顺序将二叉搜索树的每个节点添加到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
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